c++ - nodejs的内存分布

标签 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++部分?利布夫? 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/

相关文章:

node.js - 无法使用 npm 安装 @tensorflow/tfjs-node

node.js - 无法使用 API 创建 Eventbrite 事件

c - shmat() 返回的虚拟内存地址指向不同的硬件内存位置

python - 使用 C++ 和 Python 在 OpenGL 中进行资源管理

c++ - 如何通过函数传递数组并将其返回

c++ - CUDA Visual Profiler 5.0 不生成时间线,Cudadevicereset() 出错

c - 生成内存访问图的工具

c++ - 如何从 Windows 中的 Image 对象获取像素信息?

node.js - 通过Chrome远程调试API在 Electron 中设置断点

php - array_merge 与 union 在 PHP 中的性能