Como monitorar o uso de memória do nó.js?

Como posso monitorizar o uso da memória do nó.js?

Author: lonesomeday, 2013-11-16

5 answers

Node-memwatch : detectar e encontrar fugas de memória no Node.Código JS. Assinale este tutorial a seguir as fugas de memória no nó.js

 49
Author: Damodaran, 2013-11-16 12:55:26

O módulo embutido tem um método memoryUsage isso oferece uma visão do uso da memória do nó atual.processo js. Aqui está um exemplo do nó v0. 12. 2 em um sistema de 64 bits:

$ 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 }

Neste exemplo simples, você pode ver que a atribuição de uma matriz de 10m elementos consumidores aproximadamente 80MB (dê uma olhada em heapUsed).
Se você olhar para o código fonte do V8 (Array::New, Heap::AllocateRawFixedArray, FixedArray::SizeFor), então você verá que a memória usada por um array é um valor fixo mais o comprimento multiplicado pelo tamanho de um ponteiro. Este último é de 8 bytes em um sistema de 64 bits, o que confirma que a diferença de memória observada de 8 x 10 = 80MB faz sentido.

 107
Author: Rob W, 2015-05-06 21:06:51

Também, se quiser conhecer a memória global em vez do processo de nó':

var os = require('os');

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

Ver documentação

 30
Author: Voy, 2015-10-15 09:56:45

O original memwatch está essencialmente morto. Tente memwatch-next em vez disso, que parece estar a funcionar bem nas versões modernas do Node.

 24
Author: Joel, 2016-02-24 00:04:16

No Linux / Unix (Nota: O Mac OS X é um Unix) use top e carregue em M (shift+M) para ordenar processos pelo uso da memória.

No Windows, use o Gestor de Tarefas.

 1
Author: Robin Green, 2015-12-20 23:32:54