Я ищу кросс-платформенный способ надежного мониторинга максимального потребления памяти в процессе Node.js, независимо от того, существуют ли утечки или нет.
Процессы в моем случае - это как реальные приложения, так и синтетические тесты.
Я ожидаю, что он будет работать как
process.on('exit', () => {
console.log('Max memory consumption: ' + ...);
});
Можно было как-то отслеживать потребление памяти с помощью node --trace_gc ...
, но это привело к выводу, который трудно читать (и, вероятно, сложно анализировать программно). Кроме того, GC не произошел, когда script закончился слишком быстро, даже если использование ОЗУ было существенным.
Из того, что я видел по этому вопросу, обычно предлагается memwatch
для этого, например:
require('memwatch-next').on('stats', stats => {
console.log('Max memory consumption: ' + stats.max);
});
Но в моем случае это срабатывало только тогда, когда GC уже произошел или вообще не запускался, поэтому было бесполезно определять пики потребления памяти.
Я бы предпочел избегать инструментов GUI, таких как node-inspector
, если это возможно.
Может ли это максимальное потребление памяти быть надежно извлечено в виде числа из самого приложения или одного CLI, кросс-платформенного?