概述
一、问题
由于应用出现了一些性能问题,准备在本地启动应用,使用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 OS下JDK 1.8无法使用JMC问题一、问题二、原因三、解决四、连接远程机器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复