1 回答

TA貢獻1829條經驗 獲得超7個贊
通過運行此命令,可以預期與ClassLoader相關的輸出,但是在JDK8中對其進行了修改,以打印jcmd {pid} GC.class_stats
命令的結果??梢栽贘DK-8010507和JDK-8195682問題中找到一些詳細信息。
至于輸出-沒有比這更多的文檔了。一些描述可以在OpenJDK VM源代碼heapInspection.cpp文件中找到。我發現此輸出不太有用,但是這里有一些解釋(基于此標頭中的描述以及Java類格式description):
索引:該類的索引。
超級:超類的索引。如果為-1,則不存在超類(例如,針對數組類型的情況)
InstBytes:該類的所有實例占用的字節數(以字節為單位)。
KlassBytes:類本身占用的字節數(以字節為單位)。(此類的InstanceKlass或ArrayKlass的大小。)
注解:所有注解的大?。ㄒ宰止潪閱挝唬?/p>
CpAll:常量池所有部分的大?。–p + CpTags + CpCache + CpOperands + CpRefMap的總和)
MethodCount:此類中的方法編號(包括構造函數)
字節碼:類中字節碼命令占用的大小
MethodAll:方法及其元數據所占用的所有空間的總和(MethodBytes + Constmethod + Stackmap + Methoddata)
ROAll:可以(可能)放置在只讀內存中的所有類元數據的大小。(這可能會隨著CDS設計而改變)
RWAll:必須放置在讀/寫存儲器中的所有類元數據的大小。(這可能會隨著CDS設計而改變)
總計: ROAll + RWAll。請注意,這不包括InstBytes(因此實例不占用空間)
ClassName:完全限定的類名稱。
希望能幫助到你。
添加回答
舉報