Memory management 我得到了WinDbg中一个大型托管对象的地址,接下来呢?

Memory management 我得到了WinDbg中一个大型托管对象的地址,接下来呢?,memory-management,windbg,Memory Management,Windbg,我创建了一个高内存利用率转储并使用!转储堆-统计和!dumpheap-mt我得到了两个大字符串通用列表的地址,每个都有30MB 我想更多地了解这些清单。它们包含的内容或使用它们的代码段 有办法找到他们吗 0:000>!你知道2b370038吗 名称:System.Object[] 方法表:71e240bc EEClass:71c0da54 大小:33554448(0x2000010)字节 数组:秩1,元素数8388608,类型类 元素类型:System.Collections.Generic.L

我创建了一个高内存利用率转储并使用!转储堆-统计和!dumpheap-mt我得到了两个大字符串通用列表的地址,每个都有30MB

我想更多地了解这些清单。它们包含的内容或使用它们的代码段

有办法找到他们吗

0:000>!你知道2b370038吗 名称:System.Object[] 方法表:71e240bc EEClass:71c0da54 大小:33554448(0x2000010)字节 数组:秩1,元素数8388608,类型类 元素类型:System.Collections.Generic.List`1[[System.String,mscorlib]] 领域:

我建议您尝试.Net内存探查器()来探索托管内存转储。这比windbg容易得多。一个不错的GUI,您可以使用它来搜索和浏览引用图。您还可以查看实例的“字段”值。

要获取有关数组实例的信息,可以使用
!带有
-details
标志的dumparray
命令。但是请注意,转储整个数组可能需要一段时间并输出大量文本

要了解是什么使实例保持活动状态,请使用
!gcroot
命令。您可能还想查看
!参考sosex.dll中的
命令

sosex.dll还有一个
!gcgen
命令,它可以告诉您实例的生成。IIRC相应的命令已添加到sos.dll的CLR 4.0版本中