【发布时间】:2011-10-19 04:14:49
【问题描述】:
我知道已经有一些使用 massif 和其他工具进行内存分析的线程,但我想知道在生产环境中是否有任何工具或常用技术用于运行时内存分析。
可以想象这样一种实现,其中每个类都提供一个 memSize() 函数,并且通过对所有成员调用 memSize() 并添加自己的大小(或大小估计)来扩展容器以执行相同的操作。然后,您可以随时查询应用程序并查看您的哪些主要数据结构正在使用您的大部分内存,以及这些数据如何随时间变化。
不幸的是,上述策略可能很棘手——您必须处理诸如锁定、内存对齐等问题,有时您不知道第三方数据结构有多大,您必须猜测。总的来说,将它添加到所有类中似乎还需要做很多工作......
那么来看看实际的问题 - 在生产过程中监控内存使用情况和运行时内存增长原因的好方法是什么?
【问题讨论】:
标签: c++ linux memory-management profiling