首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++程序内存使用问题的排除

问C++程序内存使用问题的排除
EN

Stack Overflow用户
提问于 2021-08-17 23:08:30
回答 1查看 83关注 0票数 0

我正在编写一个C++程序,发现它消耗了太多的内存。我想知道程序的哪一部分消耗了最多的内存,理想情况下,我想知道程序在特定时刻使用什么样的C++对象占用了多少内存。

在Java中,我知道像Eclipse (https://www.eclipse.org/mat/)这样的工具可以进行堆转储并显示/可视化这样的内存使用情况,我想知道这是否可以用于C++程序。例如,我希望使用一种工具/方法,让我知道某个特定的vector<shared_ptr<MyObject>>占用了30%的内存。

注意:

  • 我主要是在macOS (使用Apple编译)上开发这个程序,所以如果这种方法能在macOS上工作会更好。但是我也部署到Linux (使用gcc编译),所以Linux上的方法/工具是可以的。
  • 为了这个目的,我尝试使用苹果的薪酬,但到目前为止,我只能使用它来发现内存分配问题。我不知道如何在特定的时刻计算程序的内存消耗(内存消耗应该与程序中的C++对象相关,这样我就可以采取相应的措施来减少它)。
EN

回答 1

Stack Overflow用户

发布于 2021-08-23 03:14:16

我还没有找到一种简单的方法来可视化/总结我的程序记忆的每一部分。到目前为止,我发现的最好的工具/方法是苹果的仪器(如果你在macOS上)。

通过使用仪器,您可以使用Allocations分析模板。使用此分析模板时,可以选择“File ==> Recording Options ==> Check Discard events for freed memory”选项。

​

​

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

​

​

虽然这并不能解决所有的问题,但它确实有助于识别问题的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68824939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档