!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
命令来获取。例如,下面的图中显示列出大对象堆中的对象。

|