Node.js и сборщик мусора V8

Вот то, что я прочитал до сих пор, и исправьте меня, если я ошибаюсь:

  • Node.js основан на движке JavaScript V8.
  • V8 JavaScript-движок реализует сборку мусора "stop-the-world"

Какой.. вызывает Node.js, иногда полностью завершая работу в течение нескольких секунд до нескольких минут, чтобы обрабатывать сборку мусора.

Если это работает для производственного кода, это несколько секунд для 10 000 пользователей.

Действительно ли это приемлемо в производственной среде?

Ответ 1

Является ли это приемлемым, зависит от вашего приложения и размера вашей кучи. Большой Gc составляет около 1,3 мс на мегабайт. YMMV. Примерно вдвое меньше, чем для уплотнения GC. Около 1 GC в 10 больших. Около 1 большой GC в 3 - это уплотнение. Используйте флаг V8 --trace-gc для регистрации GC. Мы проделали определенную работу по сокращению пауз. Нет promises, нет расписаний. См. Ветви/экспериментальный/gc в репозитории V8.