web-dev-qa-db-fra.com

Que représentent les valeurs de retour de node.js process.memoryUsage ()?

De la documentation officielle ( source ):

process.memoryUsage ()

Renvoie un objet décrivant l'utilisation de la mémoire du processus Node mesuré en octets.

var util = require('util');

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

Cela générera:

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

heapTotal et heapUsed font référence à l'utilisation de la mémoire du V8.

Que font exactement rss , heapTotal et heapUsed représente?

Cela peut sembler une question triviale, mais j'ai cherché et je n'ai pas trouvé de réponse claire jusqu'à présent.

116
Mahn

Pour répondre à cette question, il faut d'abord comprendre le schéma de mémoire de V8.

Un programme en cours d'exécution est toujours représenté par un espace alloué en mémoire. Cet espace est appelé Ensemble résident . V8 utilise un schéma similaire à la machine virtuelle Java et divise la mémoire en segments:

  • Code : le code réel en cours d'exécution
  • Stack : contient tous les types de valeurs (primitives comme entier ou booléen) avec des pointeurs référençant des objets sur le tas et des pointeurs définissant le flux de contrôle du programme
  • Heap : un segment de mémoire dédié au stockage de types de référence comme des objets, des chaînes et des fermetures. enter image description here

Maintenant, il est facile de répondre à la question:

  • rss : Taille de l'ensemble résident
  • heapTotal : taille totale du tas
  • heapUsed : tas réellement utilisé

Réf : http://apmblog.dynatrace.com/2015/11/04/understanding-garbage-collection-and-hunting- fuites de mémoire dans le nœud-js /

120
Tim Qian

[~ # ~] rss [~ # ~] est le taille définie résidente , la partie de la mémoire du processus contenue dans RAM (par opposition à l'espace de swap ou à la pièce contenue dans le système de fichiers).

Le tas est la partie de la mémoire d'où proviendront les objets nouvellement alloués (pensez à malloc en C, ou new en JavaScript).

Vous pouvez en savoir plus sur le tas sur Wikipedia .

37
Ray Toal