1 回答
TA贡献1829条经验 获得超7个赞
通过运行此命令,可以预期与ClassLoader相关的输出,但是在JDK8中对其进行了修改,以打印jcmd {pid} GC.class_stats
命令的结果。可以在JDK-8010507和JDK-8195682问题中找到一些详细信息。
至于输出-没有比这更多的文档了。一些描述可以在OpenJDK VM源代码heapInspection.cpp文件中找到。我发现此输出不太有用,但是这里有一些解释(基于此标头中的描述以及Java类格式description):
索引:该类的索引。
超级:超类的索引。如果为-1,则不存在超类(例如,针对数组类型的情况)
InstBytes:该类的所有实例占用的字节数(以字节为单位)。
KlassBytes:类本身占用的字节数(以字节为单位)。(此类的InstanceKlass或ArrayKlass的大小。)
注解:所有注解的大小(以字节为单位)
CpAll:常量池所有部分的大小(Cp + CpTags + CpCache + CpOperands + CpRefMap的总和)
MethodCount:此类中的方法编号(包括构造函数)
字节码:类中字节码命令占用的大小
MethodAll:方法及其元数据所占用的所有空间的总和(MethodBytes + Constmethod + Stackmap + Methoddata)
ROAll:可以(可能)放置在只读内存中的所有类元数据的大小。(这可能会随着CDS设计而改变)
RWAll:必须放置在读/写存储器中的所有类元数据的大小。(这可能会随着CDS设计而改变)
总计: ROAll + RWAll。请注意,这不包括InstBytes(因此实例不占用空间)
ClassName:完全限定的类名称。
希望能帮助到你。
添加回答
举报