[英]Troubleshoot C++ program memory usage issue
我正在编写一个 C++ 程序,发现它消耗了太多 memory。我想知道程序的哪一部分消耗了最多的 memory,理想情况下,我想知道哪种 C++ 消耗了 memory 的多少百分比程序在特定时刻使用的对象。
In Java, I know tools like Eclipse Memory Analyzer ( https://www.eclipse.org/mat/ ) which could take a heap dump and show/visualize such memory usage, and I wonder if this can be done for a C++ program . 例如,我希望使用一种工具/方法让我知道特定的vector<shared_ptr<MyObject>>
持有 memory 的 30%。
笔记:
我还没有找到一种简单的方法来可视化/总结我的程序 memory 的每个部分。 到目前为止,我发现的最好的工具/方法是 Apple 的 Instruments(如果您使用的是 macOS)。
通过使用 Instruments,您可以使用Allocations
分析模板。 使用此分析模板时,您可以选择File
==> Recording Options
==> 检查Discard events for freed memory
并且您将能够在分配记录期间找出未释放的 memory(也就是仍在内存中的数据)。 如果您加载了程序的调试符号,您可以看到哪个 function 导致了这个结果。
虽然这不能解决所有问题,但确实有助于确定部分问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.