来自JRockit的礼物——JMC
在Oracle收购Sun之前,Oracle的JRockit虚拟机提供了一款叫作JRockitMissionControl的虚拟机诊断工具。在Oracle收购Sun之后,Oracle公司同时拥有了SunHotspot和JRockit两款虚拟机。根据Oracle对于Java的战略,在今后的发展中,会将JRockit的优秀特性移植到Hotspot上。其中,一个重要的改进就是在Sun的JDK中加入了JRockit的支持。在OracleJDK7update40之后,MissionControl这款工具已经绑定在OracleJDK中发布(很不幸,OpenJDK中并没有该工具)。这是一款集性能监控、诊断为一体的多功能工具。
安装完JDK后,可以在%JAVA_HOME%/bin目录下找到这个工具。如图6.114所示为JMC运行后的主界面。
一,得到JFR文件
为了更好地使用JMC对生产环境中的虚拟机进行监控,我们需要首先采集到程序执行时的JFR文件,即JavaFlightRecorder,Java飞行记录仪。它记录了JVM所有事件的历史数据,通过这些数据,程序性能分析人员可以结合以往的历史数据对JVM性能瓶颈进行分析诊断。JMC也正是利用了这个文件,统计出了程序执行时的性能指标。
得到JFR文件的方法主要有3种,第1种是通过Java虚拟机的静态命令行指定的,例如: