Узел.Событие сбора мусора JS? или —trace-gc в stderr?

#garbage-collection #node.js #stderr

#сбор мусора #node.js #stderr

Вопрос:

Как правило, когда я пишу сценарии, сообщения журнала всегда отправляются в stderr, а данные (сообщения о состоянии, результаты алгоритма, что угодно) отправляются в стандартный вывод.

Я хотел бы отправить это в stderr. Это можно сделать?

Я был бы не против использовать свой собственный обработчик для какого-то process.on('gc') события, если таковое существует. Есть ли оно?

Сейчас я пишу некоторый код, в котором stdout зарезервирован для данных, и у меня нет выбора, кроме как отключить —trace-gc . Я использую memoryUsage() как вторую лучшую вещь, но она не сообщает об использовании непосредственно перед и сразу после GC, она просто сообщает вам об использовании всякий раз, когда memoryUsage() случалось быть вызванным.

Комментарии:

1. Это очень старый пост, но я наткнулся на него, и там существует пакет npmjs.com/package/gc-profiler это делает именно это.

2. @migg, это должно быть ответом. 🙂

3. Да, я думал об этом, но потому что это очень старый пост, и это был бы очень короткий ответ.

Ответ №1:

Быстрая проверка исходного кода версии 8 (где находится сборщик мусора — [каталог src узла]/deps/v8/src/heap.cc и platform-posix.cc ) показывает, что сообщения о сборке мусора печатаются на консоль с использованием стандартного linux vprint() (из printf(3)), поэтому я почти уверен, что вы не сможете перехватить их без исправления исходного кода.