为什么内存分析器不显示所有已用内存?
Why memory profiler doesn't show all the used memory?
当我在带有 massif 选项的 valgrind 下启动我的应用程序时,我看到 52.6 MiB 的峰值使用量。
但是 htop 说这个过程占用了 875MB 的 RES 内存。
同样的行为有heaptrack。有谁知道为什么探查器不报告 800+MB 消失的地方?
Massif 默认只测量由 malloc
和朋友管理的堆。它不会尝试跟踪通过其他方式映射的页面(例如 mmap
)。
为了占所有页面,需要 运行 块 --pages-as-heap=yes
。
来源:Massif manual.
当我在带有 massif 选项的 valgrind 下启动我的应用程序时,我看到 52.6 MiB 的峰值使用量。
同样的行为有heaptrack。有谁知道为什么探查器不报告 800+MB 消失的地方?
Massif 默认只测量由 malloc
和朋友管理的堆。它不会尝试跟踪通过其他方式映射的页面(例如 mmap
)。
为了占所有页面,需要 运行 块 --pages-as-heap=yes
。
来源:Massif manual.