ANTS Profiler:如何减少“所有对象”面板中显示的对象数量





0/5 (0投票)
2005年4月20日
2分钟阅读

25951
这次我们将介绍一个关于使用ANTS Profiler的简短技巧,解释ANTS Profiler如何让您快速减少正在查看的对象数量。
引言
我们之前写过关于性能分析和内存分析使用ANTS Profiler的文章。这次我们将介绍一个关于使用ANTS Profiler的简短技巧,解释ANTS Profiler如何让您快速减少正在查看的对象数量。
分析.NET应用程序的内存时,一个常见的问题是需要查看的对象数量非常多。在大量对象中搜索,仅仅为了找到您感兴趣的对象,既耗时又令人沮丧。在ANTS Profiler中,您可以通过仔细使用分组、过滤和排序来快速减少正在查看的对象数量。
让我们一步步地演示一个我典型的场景——比较两个快照之间的差异。
我经常使用内存分析器来找出当我执行某个操作(例如,单击按钮)时会创建哪些新对象。为此,我在执行操作之前拍摄内存快照,然后在操作之后拍摄另一个快照。下面的截图显示了第二个快照中的“所有对象”。
为了专注于新创建的内存,我立即使用“比较”列进行过滤,仅显示自上一个快照以来创建的“新建”对象。这立即将网格中显示的对象的数量从数千个减少到数百个。
我的下一步通常是按“命名空间”对对象进行分组。这允许我专注于特定命名空间中的所有对象。下图显示了分组结果的截图,重点是ShapePainter
命名空间。
我现在可以立即看到,我执行的操作导致创建了10个新的矩形形状。
展开System.Drawing
命名空间分组显示,我正在创建大量的SolidBrush
对象。我可能需要花更多时间来确定是否真的需要创建如此多的新Solid Brush!
显然,您可以选择过滤或分组“所有对象”网格中可用的任何列。过滤掉没有源文件的所有对象,以便专注于由您的代码创建的对象,或者按分配方法分组以查看哪些方法创建了最多的对象,这可能非常有用。
亲自尝试一下——从Red Gate的网站下载一个功能齐全的免费试用版。