#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)), поэтому я почти уверен, что вы не сможете перехватить их без исправления исходного кода.