如何在内存分析期间跟踪.NET应用程序中的内存访问频率和容量?

时间:2016-01-11 21:38:36

标签: .net profiling memory-profiling

我试图减少.NET应用程序的内存占用。随着时间的推移,这种应用程序对内存的使用已经增长,因为开发人员为了各种目的在内存中创建了新的,重复的数据表示。

我想确定访问这些双重数据表示的频率,以便我可以决定是否将它们设置为短期和创建访问权限以减少峰值工作集大小。

所以我的问题是 - 什么是跟踪对象分配的大小和数量的最佳方法,以及访问到对象的频率和数量?我知道所有基本内存分析器都处理分配信息 - 将其与内存访问相关联是我感兴趣的内容。

要明确的是,我并不是在寻找关于这个工具是否比该工具更好的辩论性辩论。相反,我正在寻找一个答案,告诉我如何最好地解决在内存分析期间计算内存访问频率和数量的问题。

1 个答案:

答案 0 :(得分:1)

我认为这不是关于内存分析。 AFAIK,现有的内存分析器都不跟踪数据访问。我想说这里有两种选择:

  • 为计算访问事件的数据类创建一些“包装器”
  • 使用效果分析器(例如dotTrace)使用Tracing模式分析您的应用。后者非常重要,因为只有在跟踪模式下,才能获得调用函数的确切次数。在快照中,查看针对数据类的 getter和setter 的调用次数。计算“访问量”可以完全相同的方式组织,具体取决于数据的性质。例如,如果您使用某些集合,则可以计算对枚举器的get_Current或MoveNext方法或smth的调用次数。类似。