我正在编写一个C++程序,发现它消耗了太多的内存。我想知道程序的哪一部分消耗了最多的内存,理想情况下,我想知道程序在特定时刻使用什么样的C++对象占用了多少内存。
在Java中,我知道像Eclipse (https://www.eclipse.org/mat/)这样的工具可以进行堆转储并显示/可视化这样的内存使用情况,我想知道这是否可以用于C++程序。例如,我希望使用一种工具/方法,让我知道某个特定的vector<shared_ptr<MyObject>>占用了30%的内存。
注意:
发布于 2021-08-23 03:14:16
我还没有找到一种简单的方法来可视化/总结我的程序记忆的每一部分。到目前为止,我发现的最好的工具/方法是苹果的仪器(如果你在macOS上)。
通过使用仪器,您可以使用Allocations分析模板。使用此分析模板时,可以选择“File ==> Recording Options ==> Check Discard events for freed memory”选项。

你就能找出不自由的记忆(也就是。在分配记录期间仍在内存中的数据)。如果加载了程序的调试符号,则可以看到导致此结果的函数。

虽然这并不能解决所有的问题,但它确实有助于识别问题的一部分。
https://stackoverflow.com/questions/68824939
复制相似问题