自从在JavaOne 2012上听说 jcmd以来,我就一直是命令行诊断工具jcmd的 粉丝 。 从那时起,我已广泛使用此工具,并多次在此博客中发布过此工具:
- jcmd:一个可以全部统治的JDK命令行工具
- 确定活动的热点垃圾收集器
- 程序化JCMD访问
- JavaOne 2012:在VM上诊断您的应用程序
在使用Java进行了多年开发之后,我认为类加载器是在开发和调试过程中遇到的一些最困难的缺陷的源头。 鉴于此观察结果,并引起了我对jcmd
兴趣,我对JDK-8203682非常感兴趣[“添加jcmd'VM.classloaders'命令以打印出类加载器层次结构,详细信息”]。
JDK-8203682的“描述”指出,“作为对VM.classloader_stats的补充,使用命令打印出类加载器层次结构和类加载器详细信息将很有帮助。” 换句话说,此要添加到jcmd
命令将包括以类似于jcmd
的VM.class_hierarchy命令显示类的类的分层方式显示类加载器。
JDK-8203682的“状态”显示为“ 已解决 ”,其“修复版本”显示为“ 11 ”。 JDK-8203682包含三个文本文件附件,这些附件描述了jcmd <pid> VM.classloaders
的输出: example-with-classes.txt , example-with-classes-verbose.txt和example-with-reflection-and-noinflation。 txt 。 更改集的公告和更改集本身中提供了其他信息。
处理Java中与类加载器相关的问题时,任何详细信息都将有所帮助。 添加的VM.classloaders
指挥jcmd
将使这个命令行工具更有价值和有见地。
翻译自: https://www.javacodegeeks.com/2018/06/jdk-class-loader-hierarchy-jcmd.html