当我启动一个新的 nodejs 并输入 process.memoryUsage() 时,它显示
> process.memoryUsage()
{ rss: 11296768,
heapTotal:7195904,
heapUsed:2964776
所以 nodejs 使用了 11M 内存,而 v8 的堆使用了其中的 7M。
剩下的11-7=4M内存还有什么消耗,nodejs的c++部分?利布夫? v8 本身?
有什么方法或者工具可以查看内存分布吗?
ps: 我不需要 node-heap/node-memwatch 来检测 v8 堆中的内存。他们主要是测量js项目(js文件)使用的内存。我想知道 Node 本身使用的内存。哪些部分使用剩余的 4M,各部分用多少。
最佳答案
V8 不会在垃圾收集器每次运行时压缩堆。这意味着中间可能有未使用的空间。这是一个非常蹩脚的图表,显示了引擎盖下可能发生的事情。
-------------------------------------------
| | | |
| used | unused | used |
| | | |
-------------------------------------------
所以总堆大小是第一个字节分配到最后一个分配的字节。 V8 可能会在未来的某个时候使用“未使用”的空间,但它不需要。
关于c++ - nodejs的内存分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381497/