c++ - 解决 C++ 程序内存使用问题
问题描述
我正在编写一个 C++ 程序,发现它消耗了太多内存。我想知道程序的哪个部分消耗的内存最多,理想情况下,我想知道程序在特定时刻使用哪种 C++ 对象消耗了多少内存。
在 Java 中,我知道像 Eclipse Memory Analyzer ( https://www.eclipse.org/mat/ ) 这样的工具可以进行堆转储并显示/可视化这种内存使用情况,我想知道这是否可以用于 C++ 程序. 例如,我希望使用一种工具/方法让我知道某个特定vector<shared_ptr<MyObject>>
对象占用了 30% 的内存。
笔记:
- 我主要在 macOS 上开发程序(使用 Apple Clang 编译),所以如果该方法适用于 macOS 会更好。但我也部署到 Linux(使用 gcc 编译),所以 Linux 上的方法/工具是可以的。
- 我尝试使用 Apple 的Intruments来实现此目的,但到目前为止我只能用它来查找内存分配问题。我不知道如何计算程序在特定时刻的内存消耗(内存消耗应该与程序中的 C++ 对象相关,以便我可以采取一些措施来相应地减少它)。
解决方案
推荐阅读
- erpnext - 电子邮件没有自动创建为 ERPNext 中的问题
- android - 如何在android中为特定屏幕尺寸添加尺寸
- c# - 无法通过 EWS 托管 API 从电子邮件中下载 FileAttachment
- python - Python:如何创建一个在本地保存并在运行之间持续存在的变量
- ruby-on-rails - 我正在进行新的迁移以在 ROR 中的两个实体之间创建关联。我在迁移中使用了错误的实体,需要将其删除
- aws-api-gateway - 第 7 层负载均衡器 vs API 网关 vs 负载均衡器 + 路由服务
- database - 为什么重启 influxdb 后读取访问需要时间?
- javascript - 创建等高按钮
- .net-core - 是否可以将 IAgent 接口注入到 .net 核心 DI 容器
- android - File_Picker 插件不返回 Flutter 中写入文件的绝对路径