node.js process.memoryUsage()的返回值代表什么?

从官方文档( 来源 ):

process.memoryUsage()

返回描述以字节为单位测量的节点进程的内存使用情况的对象。

var util = require('util'); console.log(util.inspect(process.memoryUsage())); 

这将产生:

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

heapTotal和heapUsed是指V8的内存使用情况。

确切地说, rssheapTotalheapUsed代表什么?

这可能看起来像一个微不足道的问题,但我一直在寻找,到目前为止我还找不到明确的答案。

为了回答这个问题,首先要了解V8的Memory Scheme。

正在运行的程序总是通过内存中分配的一些空间来表示。 这个空间被称为Resident Set 。 V8使用类似于Java虚拟机的scheme,并将内存划分为几部分:

  • 代码 :正在执行的实际代码
  • 堆栈 :包含所有值types(像整型或布尔型的基元),指针指向堆上的对象,指针定义程序的控制stream
  • :专用于存储对象,string和闭包等引用types的内存段。 在这里输入图像说明

现在很容易回答这个问题:

  • rss :驻地集合大小
  • heapTotal :堆的总大小
  • heapUsed :堆实际使用

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

RSS是驻留集的大小 ,是进程内存中保存在RAM中的部分(与交换空间或文件系统中的部分相对)。

是新分配的对象将从哪里来的内存部分(想想C中的malloc或者JavaScript中的new )。

你可以在维基百科上阅读更多有关堆的信息。