如何找到最常用的内存区域?

How to find most frequently used areas of memory?

我想分析一个大型 C++ 应用程序并确定哪些数据(或内存区域)被获取最多。基本上,我希望能够执行类似于处理器的 MFU 缓存算法的操作,以确定要存储在 L2/L3 缓存中的内容。令人惊讶的是,网上几乎没有关于任何人试图实现这一目标的信息。

编辑:将 MRU 更改为 MFU

编辑 2:为了澄清,我需要地址,或者指向地址的数据结构。

您可以使用Pin tool记录所有内存访问并计算缓存hit/miss。

valgrind 可以做到这一点 - 它需要一个插件,不知道是否已经有一个。

编辑: 它被称为 cachegrind