运维开发网

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

运维开发网 https://www.qedev.com 2021-01-21 10:58 出处:云网牛站 作者:刘庆兴
本文介绍在Fedora 29系统下安装JDK Mission Control(JMC),作为Fedora 29中的模块使用,JMC需要JDK 8或更高版本,是JVM的一部分,可在OpenJDK 11或Oracle JDK 7u4或更高版本中使用,当前已开源,请看

本文介绍在Fedora 29系统下安装JDK Mission Control(JMC),作为Fedora 29中的模块使用,JMC需要JDK 8或更高版本,是JVM的一部分,可在OpenJDK 11或Oracle JDK 7u4或更高版本中使用,当前已开源,请看Java性能监控调试工具JMC宣布开源一文。本文是在Fedora 29 Workstation下安装和运行JMC的。

 

在Fedora 29下安装JMC

使用Java 11将允许JMC为自己记录JFR数据,通过以下方式安装Java 11:

$ sudo dnf install java-11-openjdk

通过以下方式启用并安装具有默认配置文件的JMC模块:

$ sudo dnf module install jmc:latest/default

通过以下方式运行针对Java 11 JRE的JMC:

$ jmc -vm /usr/lib/jvm/jre-11/bin

参考:在CentOS 7/Fedora 29系统上安装Java 11的方法。

 

使用JMC和JFR来探索hot methods

JDK Mission Control可用于深入分析Java应用程序,在这个例子中,我们将看一下hot methods,Hot methods是在执行期间花费大量时间的methods,在尝试减少总体执行时间时,这些是开始调查的好地方。

为了演示,这里是Java应用程序的一部分代码:

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

实际上,在JDK Mission Control中有多种分析Java应用程序的methods,例如,你可以在启用Flight Recording的情况下运行应用程序,并在JVM出口上设置为dump,这将在应用程序退出时生成Flight Recording(.jfr)文件,该文件可由JDK Mission Control打开,请注意,Flight Recorder可在OpenJDK 11+和OracleJDK 7u4+中使用。

例如,对于OpenJDK 11+,使用此命令运行Flight Recorder类:

$ java -XX:+FlightRecorder -XX:StartFlightRecording=dumponexit=true,filename=initiator.jfr Initiator

应用程序完成执行后,使用JMC打开生成的Flight Recording,以下是自动分析结果:

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

automated Method分析已经指示对Integer.equals(Object)的调用中的潜在优化区域,转到Method Profiling选项卡,选择该Method并检查堆栈跟踪,如下所示:

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

在此堆栈跟踪中,你可以跟随对method Initiator.countIntersection(Initiator)的调用,检查Initiator类,如下所示,请注意,使用HashSet集合而不是LinkedLists集合可以更好地计算两个Integer集合之间的交叉点:

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

进行此更改后,你可以在后续的Flight Recording中看到执行情况的改进:

在Fedora 29系统下安装JDK Mission Control(JMC)的方法

通过Fedora 29中的JMC模块试一试,JDK Mission Control和JDK Flight Recorder为你提供了Java应用程序行为的详细视图,你可以使用它来诊断hot methods、deadlocks、lock contention、memory leaks等问题。

 

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号