从官方文档(来源):
process.memoryUsage()
返回一个对象,描述以字节为单位测量的Node进程的内存使用情况.
Run Code Online (Sandbox Code Playgroud)var util = require('util'); console.log(util.inspect(process.memoryUsage()));这将产生:
Run Code Online (Sandbox Code Playgroud){ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }heapTotal和heapUsed是指V8的内存使用情况.
究竟rss,heapTotal和heapUsed代表什么?
这似乎是一个微不足道的问题,但我一直在寻找,到目前为止我找不到一个明确的答案.
tim*_*ian 127
为了回答这个问题,首先要了解V8的存储器方案.
正在运行的程序总是通过内存中分配的一些空间来表示.这个空间叫做Resident Set.V8使用类似于Java虚拟机的方案,并将内存划分为多个段:
现在很容易回答这个问题:
参考:http://apmblog.dynatrace.com/2015/11/04/understanding-garbage-collection-and-hunting-memory-leaks-in-node-js/
Ray*_*oal 38
RSS是驻留集大小,进程内存中保存在RAM中的部分(与交换空间或文件系统中保存的部分相对).
所述堆是从新近分配的对象将来自(想到的存储器的部分malloc中C,或new在JavaScript).
您可以在Wikipedia上阅读有关堆的更多信息.
bvd*_*vdb 13
在Node.js的doumentation其描述如下:
heapTotal 和 heapUsed指的是 V8 的内存使用情况。external指的是绑定到 V8 管理的 JavaScript 对象的 C++ 对象的内存使用。rss,Resident Set Size,是进程在主内存设备(即总分配内存的子集)中占用的空间量,包括堆、代码段和堆栈。
所有提到的值都以字节表示。因此,如果您只想打印它们,您可能希望将它们重新缩放为 MB:
const used = process.memoryUsage();
for (let key in used) {
console.log(`Memory: ${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
}
Run Code Online (Sandbox Code Playgroud)
这会给你一个输出,如:
Memory: rss 522.06 MB
Memory: heapTotal 447.3 MB
Memory: heapUsed 291.71 MB
Memory: external 0.13 MB
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29685 次 |
| 最近记录: |