当我启动一个新的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/