!DumpHeap 将遍历 GC 堆对对象进行分析。通过指定不同的选项,可以查看特定的类型、数组和锁。 如果不加任何选项,该命令的输出首先为堆中对象的列表,然后是包含已发现类型的列表、大小和数量的报表。 其中 “Free” 对象代表的是垃圾回收器可以使用的区域。如果此区域的大小超过30%则可能意味着出现了堆碎片。 这通常是由于某些对象被持有了较长时间,并且结合了大量高频率的内存分配。 !DumpHeap 会针对此情况提供一个关于堆碎片化的警告。 -stat 限定输出为类型统计分析的汇总 -strings 限定输出为字符串类型的统计分析汇总 -short 限定输出仅为对象的地址,这将为串行化命令调试带来便利 -min <size> 忽略尺寸小于给定的 bytes 值的对象 -max <size> 忽略尺寸大于给定的 bytes 值的对象 -live 仅输出仍然存活的对象 -dead 仅输出已死亡的对象 (这些对象将在下一个 Full GC 中被回收) -thinlock ThinLocks 的报告 (参考 !SyncBlk) -startAtLowerBound 强制堆指向可使用的地址的低地址边界 -mt <MethodTable address> 仅列出包含 MethodTable 的对象 -type <partial type name> 仅列出对象类型字符串中包含给定子字符串的对象 start 从给定地址处开始列出对象 end 从给定地址处停止检索 start/end 的参数可以通过 !EEHeap -gc 命令来获取。例如,下面的图中显示列出大对象堆中的对象。
|