我知道已经有一些关于使用massif和其他工具进行内存分析的线程,但我想知道是否存在任何工具或常见技术,用于生产环境下的运行时内存分析。
可以想象一种实现方式是每个类都提供一个memSize()函数,并通过调用其成员的memSize()函数并添加自己的大小(或大小估算)来扩展容器。然后,在任何时间点上,您都可以查询应用程序,并查看哪些主要数据结构正在使用大部分内存以及随时间而变化的情况。
不幸的是,以上策略可能会很棘手——您必须处理锁定、内存对齐等问题,有时您不知道第三方数据结构有多大,需要猜测。总体而言,将其添加到所有类中也似乎是相当费力的工作...
因此,要回答实际问题——在生产过程中,监视内存使用情况和内存增长原因的好方法是什么?
可以想象一种实现方式是每个类都提供一个memSize()函数,并通过调用其成员的memSize()函数并添加自己的大小(或大小估算)来扩展容器。然后,在任何时间点上,您都可以查询应用程序,并查看哪些主要数据结构正在使用大部分内存以及随时间而变化的情况。
不幸的是,以上策略可能会很棘手——您必须处理锁定、内存对齐等问题,有时您不知道第三方数据结构有多大,需要猜测。总体而言,将其添加到所有类中也似乎是相当费力的工作...
因此,要回答实际问题——在生产过程中,监视内存使用情况和内存增长原因的好方法是什么?