介绍
JMC 是一个知名的 JVM 分析和诊断工具套件,主要针对运行在生产环境中的系统。开发者可使用它来收集有关 JVM 和 Java 应用如何运行的详细信息。目前JMC已经被Oracle开源,repo依然托管在http://hg.openjdk.java.net/jmc/jmc/ ,有一个实验性的导入在https://github.com/JDKMissionControl/jmc 上,通过https://community.oracle.com/thread/4180326 了解到Github上的repo只是测试性的,目前所有工作还是通过hg repo来完成。本文主要针对搭建开发环境进行简单介绍,当然还是以hg 的repo为主,关于测试代码会放在https://github.com/smarkm/jmc/tree/smark-test 有兴趣的同学可以了解和讨论,测试代码放在smark-test分支下(主要针对感兴趣的内容做些简单测试)。
环境准备
- 从hg repo clone代码
hg clone http://hg.openjdk.java.net/jmc/jmc/
- 在third-party目录下执行
mvn p2:site
构建依赖 - 在third-party目录下执行
mvn jetty:run
启动本地更新站点(eclipse) - 需要建一个名为JMC_JDK的User Library,并添加以下jar包到Library中:
tools.jar (/lib/tools.jar)
,jconsole.jar (/lib/jconsole.jar)
,jfxswt.jar (/jre/lib/jfxswt.jar)
,and finally the jfxrt.jar (/jre/lib/ext/jfxrt.jar)
- 建议使用Photon版本Eclipse
导入代码
整个代码结构是通过maven构建的所以你可以选择性的导入需要的project,目录结构大致如下:
[img[imgs/java-jmc-repo-dir.png]]
-
releng\platform-definitions
下是RPC的Target Platform定义文件,可以根据自己的需要导入,这loadTarget Platform的时候用到的就是准备环境中做构建的依赖 -
core
下面是JFR相关解析和处理的核心API -
application
下是RCP相关的project - 上述两个目录中包含很多测试项目,如果只是入手可以先不导入那些测试项目
验证本地代码正常工作
导入项目后会自动导入4个对应的运行配置,我们可以直接启动JMC RCP 运行
当前代码为7.0开发版,启动界面和JFR分析界面都有很大的改动
Automated Analysis