¿Qué hacen los valores de retorno de nodo.proceso js.memoryUsage() representan?


De la documentación oficial (fuente):

Proceso.MemoryUsage()

Devuelve un objeto que describe el uso de memoria del proceso Node medido en bytes.

var util = require('util');

console.log(util.inspect(process.memoryUsage()));

Esto generará:

{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }

HeapTotal y heapUsed se refieren al uso de memoria de V8.

Exactamente qué hacer rss, heapTotal, y heapUsed representan?

Puede parecer una pregunta trivial, pero he estado buscando y no pude encontrar una respuesta clara hasta ahora.

 103
Author: Sender, 2012-08-19

2 answers

Para responder a esta pregunta, primero hay que entender el Esquema de Memoria de V8.

Un programa en ejecución siempre se representa a través de algún espacio asignado en la memoria. Este espacio se llama Conjunto residente . V8 utiliza un esquema similar a la Máquina Virtual Java y divide la memoria en segmentos:

  • Code : el código real que se está ejecutando
  • Stack : contiene todos los tipos de valores (primitivos como integer o booleano) con punteros referencia de objetos en el montón y punteros que definen el flujo de control del programa
  • Heap: un segmento de memoria dedicado a almacenar tipos de referencia como objetos, cadenas y cierres. introduzca la descripción de la imagen aquí

Ahora es fácil responder a la pregunta:

  • rss : Tamaño del Conjunto residente
  • heapTotal : Tamaño total del Montón
  • heapUsed : Heap actually Used

Ref : http://apmblog.dynatrace.com/2015/11/04/understanding-garbage-collection-and-hunting-memory-leaks-in-node-js/

 98
Author: Tim Qian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-27 08:54:30

RSS es el tamaño del conjunto residente , la porción de la memoria del proceso mantenida en RAM (a diferencia del espacio de intercambio o la parte mantenida en el sistema de archivos).

El montón es la porción de memoria de la que provendrán los objetos recién asignados (piense en malloc en C, o new en JavaScript).

Puedes leer más sobre el montón en Wikipedia.

 35
Author: Ray Toal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-19 01:05:37