一、问题
由于应用出现了一些性能问题,准备在本地启动应用,使用JMC分析下应用运行时的详细内存信息。
本地开发环境使用macbook,由于是使用的安装包安装的jdk,直接在命令行输入jmc,就可以启动JMC(如果没有配置path,可能需要到jdk安装目录下的bin内启动jmc)。
启动jmc:
结果:发现启动后界面上只有三个窗口操作按钮,界面根本无法显示出来。

二、原因
这个问题是由于Eclipse/SWT老版本的bug导致的,可以通过替换相关jar解决。bug reference: JMC-5139
三、解决
下载jar包:下载地址。
这里建议使用低版本3.105.2的包。我尝试使用了3.116.0的包,发现不好使。
进入jdk安装目录(通常,安装包默认jdk目录为/Library/Java/JavaVirtualMachines/jdk1.8.0_xxx.jdk/Contents/Home/),
在lib/missioncontrol/plugins目录内找到org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar,将其备份,命令为:
mv org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar.bak
将我们下载的jar包重命名为org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar,复制到lib/missioncontrol/plugins目录内替换原jar包,命令为:
mv org.eclipse.swt.cocoa.macosx.x86_64-3.105.2.jar org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar
重启jmc,拖拽界面,显示成功:

附注方案来源地址:
https://stackoverflow.com/questions/48400346/java-mission-control-from-jdk-1-8-0-161-frozen-upon-startup-on-mac-os-x
在stack overflow上找到了一个同样的问题,并且发现已经有解决方案:。
四、连接远程机器
远程机器上启动应用程序时,增加JVM配置:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Dcom.sun.management.jmxremote.port=7001
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=7001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
开启远程连接:
”文件“->”连接“->"创建新连接"->"下一步"
点击完成即可。
然后,点击JVM浏览器内的MBean服务器,可以连接远程服务,查看具体服务信息。
效果如下:

最后
以上就是心灵美台灯最近收集整理的关于解决Mac OS下JDK 1.8无法使用JMC问题一、问题二、原因三、解决四、连接远程机器的全部内容,更多相关解决Mac内容请搜索靠谱客的其他文章。


发表评论 取消回复