CSR( 兼容性和规范审查 ) JDK-8224601 [“提供VM.events诊断命令”]从JDK 13 Early Access Build #24 (日期为2019/6/6 )开始在JDK 13中实现,并通过增强功能JDK- 8224600 [“提供VM.events命令”]。 CSR的“摘要”描述了此增强功能:“向jcmd添加VM.events命令以显示事件日志。” CSR的“解决方案”状态为:“向jcmd添加命令以打印事件日志。 建议的名称是“ VM.events ”。”
CSR JDK-8224601的“问题”部分说明了将VM.events
添加到已经多功能的jcmd中所获得的价值:“事件日志是一种有价值的问题分析工具。 现在,查看它们的唯一方法是通过hs-err文件,以防VM死亡或作为VM.info输出的一部分。”
为了演示jcmd的新VM.events
的作用,我下载了JDK 13 Early Access Build#24,并用其编译了一个简单的人为Java应用程序,然后我可以运行同一JDK 13 Early Access Build#24 jcmd
工具。反对。
此处显示的第一个屏幕快照演示了如何使用jcmd
检测简单Java应用程序的PID,并使用jcmd <pid> help
来查看哪些jcmd
选项可用于该特定正在运行的Java进程。 VM.events
的存在被突出显示。
下一个屏幕快照演示了如何使用jcmd <pid> help VM.events
来查看新添加的VM.events
命令的用法(包括可用选项)。
最终的屏幕快照通过显示运行该命令的输出的顶部(大部分),不带任何选项,演示了jcmd
的新VM.events
命令的应用。
VM.events
命令的选项是将结果缩小到要打印的指定日志或限制显示的事件数。 通过不指定任何选项,我隐式地请求所有日志和所有事件的默认值。
在最后显示的屏幕快照中,我们可以看到输出中呈现的JVM事件的类型包括“ 编译事件 ”,“非优化事件 ”, 垃圾收集事件 , 卸载的类,重新定义的类和已加载的类 。
多年来,我一直是jcmd的忠实拥护者 ,并认为对于许多Java开发人员来说,它仍然普遍是一种未被充分认识的命令行工具。 JDK 13中添加了VM.events命令,该工具对于诊断各种问题更加有用。
翻译自: https://www.javacodegeeks.com/2019/06/jdk-13-vm-events-added-to-jcmd.html