nodejs的内存分布

时间:2015-04-01 01:43:54

标签: c++ node.js memory io.js

当我启动一个新的nodejs并输入process.memoryUsage()时,它会显示

> process.memoryUsage() { rss: 11296768, heapTotal: 7195904, heapUsed: 2964776 }

所以nodejs使用11M内存,而v8的堆使用7M内存。

还有什么消耗剩余的11-7 = 4M内存,nodejs的c ++部分? libuv? v8本身?

是否有任何方法或工具可以查看内存分配?

ps:我不需要node-heap / node-memwatch来检测v8堆中的内存。它们主要测量js项目使用的内存(js文件)。我想知道节点本身使用的内存。哪些部分使用其余部分 4M,每个部分使用多少。

1 个答案:

答案 0 :(得分:1)

每次垃圾收集器运行时,V8都不压缩堆。这意味着它们之间可能存在未使用的空间。这是一个非常蹩脚的图表,以显示可能发生的事情。

-------------------------------------------
|            |             |              |
|   used     |   unused    |      used    |
|            |             |              |
-------------------------------------------

因此总堆大小是分配给最后一个分配字节的第一个字节。 V8可能会在将来的某个时候使用“未使用”的空间,但它不需要。