Jay*_*rod 6 linux memory profiling
我想跟踪各种程序在特定状态下触摸的内存量.例如,假设我有一个图形程序.当它被最小化时,它可能会使用更少的内存,因为它不会重绘窗口,这需要读取图像和字体并执行大量的库函数.这些对象仍可在内存中访问,但实际上并未使用它们.
类似top
的工具是有限使用的,因为它们只是告诉多少内存映射到程序的地址空间,以及它有多少驻留在物理RAM中.同样,泄漏检测器只会告诉内存何时无法访问,而不是仅仅是因为它没有被使用.
是否存在可以以这种方式跟踪活动使用/未使用的内存的现有工具?如果可能的话,我不仅要跟踪堆上的使用情况,还要跟踪存储程序/库代码的内存.
编辑:我想澄清一下:我想知道程序实际读取,写入或执行某个点之后的内存,即一旦达到某个状态.虽然地址空间中的页数和常驻页数是重要的测量值,但这不是我想要的.
我现在正在追求三种方法:
valgrind 工具cachegrind 在跟踪内存使用情况方面做得很好。
还有一些工具可以以图形方式显示 Cachegrind 的输出。
编辑回复更新信息:
在 valgrind 出现之前,我使用了一个名为 mpatrol 的项目。
它使用 mprotect() 使页面只读并跟踪对
页面的访问。它还允许指定何时开始和停止报告,
例如在第 n 个 malloc 之后,以及其他规范。
它可以实现您正在寻找的许多或所有功能。
需要注意的是,它比 valgrind 慢得多。
归档时间: |
|
查看次数: |
8623 次 |
最近记录: |