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的内存使用情况。
确切地说, rss , heapTotal和heapUsed代表什么?
这可能看起来像一个微不足道的问题,但我一直在寻找,到目前为止我还找不到明确的答案。
为了回答这个问题,首先要了解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
)。
你可以在维基百科上阅读更多有关堆的信息。