2

我有几百万个物体在记忆中徘徊。我想为他们找到 gcroot,所以我需要一个对象地址。!DumpHeap 但是会转储所有花费的时间比我耐心等待的时间长的对象。如何将其输出限制为仅一个对象地址?我正在使用 Visual Studio 2008 顺便说一句。

4

4 回答 4

3

杰森埃文斯是对的。我的版本没有 -l 开关,所以这是我使用的解决方法:我使用 end 参数将输出限制为这样的地址范围:

!dumpheap -mt 0794f29c 0 04000000

最后一个地址是我允许的最高地址。通过小步增加地址,我最终击中了前几个对象。

于 2011-08-14T19:34:15.490 回答
2
!dumpheap -type System.String -short

只会转储对象的地址

于 2012-10-09T07:23:09.563 回答
1

看看这个页面。看起来你可以使用

-l X

限制显示的项目数量。

于 2010-01-04T15:12:50.617 回答
0

最好的起点是 -stat 参数。这将转储活动对象表的摘要,而不是系统中的每个对象。它会让您很好地了解哪些对象会导致最大的开销

!dumpheap -stat

我还建议查看以下博客文章,因为它们旨在帮助人们使用 WinDbg 来追踪此类问题

于 2010-01-04T15:16:00.707 回答