当我启动一个新的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,每个零件使用多少。

最佳答案

V8不会在每次垃圾收集器运行时都压缩堆。这意味着它们之间可能有未使用的空间。这是一个非常la脚的图表,用于说明引擎盖下可能发生的情况。

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


因此,总堆大小是分配的第一个字节到分配的最后一个字节。 V8将来可能会使用“未使用”的空间,但不是必需的。

关于c++ - nodejs的内存分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29381497/

10-11 23:14
查看更多