gpt4 book ai didi

linux - 比较 valgrind、massif、top 和 pmap

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:10 24 4
gpt4 key购买 nike

我正在尝试了解我的应用程序是否存在泄漏。

在运行我的应用程序时,我定期运行 pmap 并观察:

mapped: 488256K    writeable/private: 90144K    shared: 0K
mapped: 488260K writeable/private: 101912K shared: 0K
mapped: 488256K writeable/private: 102708K shared: 0K
mapped: 488260K writeable/private: 105112K shared: 0K

我运行 top 并观察:

VIRT    RES     SHR
488260 17684 3020
488256 20060 3032
488256 22700 3032
488256 26132 3032
488256 28772 3032
488256 31880 3032

“RES”和“可写/私有(private)”的增加让我怀疑存在泄漏。但是,运行 valgrind 我没有检测到任何重大泄漏,并且当我中止执行时,我始终查看大约 20Mb 可用内存:

==19998== 
==19998== HEAP SUMMARY:
==19998== in use at exit: 20,351,513 bytes in 974 blocks
==19998== total heap usage: 329,404 allocs, 328,430 frees, 34,562,346 bytes allocated
==19998==
==19998== LEAK SUMMARY:
==19998== definitely lost: 63 bytes in 4 blocks
==19998== indirectly lost: 0 bytes in 0 blocks
==19998== possibly lost: 4,679 bytes in 76 blocks
==19998== still reachable: 20,346,771 bytes in 894 blocks
==19998== suppressed: 0 bytes in 0 blocks
==19998== Rerun with --leak-check=full to see details of leaked memory
==19998==
==19998== For counts of detected and suppressed errors, rerun with: -v
==19998== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

我运行 valgrind --tool=massif 并且还看到 20Mb flat:

massif visualisation

问题:有人可以解释为什么 valgrind 和 massif 告诉我我的程序一直使用 20Mb 内存,但 top 和 pmap 告诉我使用量在增长吗?

最佳答案

为了理解为什么 top 显示您的进程增加,您还需要使用 valgrind --pages-as-heap=yes 分析程序中的内存分配。你会明白为什么会增加。这是 top 测量进程内存消耗的方式。 http://valgrind.org/docs/manual/ms-manual.html#ms-manual.not-measured .使用 valgrind --pages-as-heap=yes 你会看到这些分配是在你的程序中完成的

关于linux - 比较 valgrind、massif、top 和 pmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com