Подтвердить что ты не робот

Как отслеживать использование памяти Node.js?

Как я могу отслеживать использование памяти Node.js?

4b9b3361

Ответ 2

В встроенном process модуле есть метод memoryUsage, который дает представление о использование памяти текущего процесса Node.js. Ниже приведен пример из Node v0.12.2 в 64-разрядной системе:

$ node --expose-gc
> process.memoryUsage();  // Initial usage
{ rss: 19853312, heapTotal: 9751808, heapUsed: 4535648 }
> gc();                   // Force a GC for the baseline.
undefined
> process.memoryUsage();  // Baseline memory usage.
{ rss: 22269952, heapTotal: 11803648, heapUsed: 4530208 }
> var a = new Array(1e7); // Allocate memory for 10m items in an array
undefined
> process.memoryUsage();  // Memory after allocating so many items
{ rss: 102535168, heapTotal: 91823104, heapUsed: 85246576 }
> a = null;               // Allow the array to be garbage-collected
null
> gc();                   // Force GC (requires node --expose-gc)
undefined
> process.memoryUsage();  // Memory usage after GC
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4528072 }
> process.memoryUsage();  // Memory usage after idling
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4753376 }

В этом простом примере вы можете увидеть, что распределение массива из 10M элементов составляет примерно 80 МБ (посмотрите heapUsed).
Если вы посмотрите на исходный код V8 (Array::New, Heap::AllocateRawFixedArray, FixedArray::SizeFor), вы увидите, что память, используемая массивом, является фиксированным значением плюс длина, умноженная на размер указателя. Последний имеет 8 байтов в 64-битной системе, что подтверждает, что наблюдаемая разница в памяти 8 x 10 = 80 МБ имеет смысл.

Ответ 3

Кроме того, если вы хотите узнать глобальную память, а не node process ':

var os = require('os');

os.freemem();
os.totalmem();

См. документацию

Ответ 4

Оригинальный memwatch по существу мертв. Попробуйте memwatch-next, который, кажется, хорошо работает в современных версиях Node.

Ответ 5

В Linux/Unix (примечание: Mac OS - это Unix) используйте top и нажмите M (Shift + M) для сортировки процессов по использованию памяти.

В Windows используйте диспетчер задач.