为什么内存分析器不显示所有已用内存?

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.