做java的同学经常会遇到性能调优的情况,例如线上的内存oom了,线上的程序突然假死没反应了等等。所以作为java开发的同学对于性能优化是一个必掌握的知识点,因此这批文章我们介绍一个可以用来做java性能可视化分析的工具-VisualVM.
这个工具无需下载,因为我们安装的所有的windows版本的jdk里面已经自带了,路径是:${JAVA_HOME}/bin/jvisualvm.exe,例如:C:\Program Files\Java\jdk1.8.0_341\bin\jvisualvm.exe。如图:
双击后我们就能看到这个工具了,打开之后就可以看到第一张图的内容。在这个工具里面,我们可以使用本地和远程,本地的话,他是自带的,也就是在我们本地电脑上运行的所有java程序,他会自动帮我们列举出来,例如这里我启动了一个eclipse,也启动了一个TCDemo的java程序
然后左侧列表就会列举出来我所有的java程序
点击一个我们想要优化的进程,首先可以看到的就是整个项目的概述情况。
同时我们可以看到当前进程的jvm活动情况,点击第二个tab,监视这个按钮
同时还可以看到所有线程的执行情况
最重要的,我们可以自己抽查某一段时间内这个进程的CPU和内存使用数据
抽样了之后,我们可以把数据拿回来自己分析,点击CPU,能看到各个方法的使用耗时
点击内存,可以看到各对象的内存使用量。
最后的profiler可以分析CPU和内存的性能情况,如图:
待分析完毕后即可看到结果
以上就是VisualVM这个工具的基本用法。
上面除了演示本地的进程,我们再演示下远程监控服务器的进程,下面说下操作步骤:
1、在VisualVM这个工具的主页,右键选择远程,添加一个远程服务器
2、输入主机名即可,这里直接填写远程主机的host,其他的不用管
3、在服务器上启动java程序,这里以springboot为例:启动命令如下:
java -jar -Djava.rmi.server.hostname=192.168.31.20 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9122 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false TCJDemo-1.0.jar
启动完毕后,项目如下:
4、回到VisualVM界面,右键刚才添加的远程服务器,选择添加JMX链接
然后就添加成功了,左侧列表就会多出来一个进程
双击这个进程,我们就可以看到进程相关的监控了。
备注:
1、本来选择使用云服务器演示,但是云服务器服务部署之后,始终本地的VisualVM连不上去,目前暂且怀疑是内网IP绑定的问题,导致链接的时候返回客户端也是内网,所以连接不上(只是猜测,后期有时间再求证下。)
2、这个工具只适合开发环境和测试环境,千万不要在生产环境使用,会给生产环境带来非常大的负荷,影响线上业务。
3、这个工具只适合开发环境和测试环境,千万不要在生产环境使用,会给生产环境带来非常大的负荷,影响线上业务。
4、这个工具只适合开发环境和测试环境,千万不要在生产环境使用,会给生产环境带来非常大的负荷,影响线上业务。
还没有评论,来说两句吧...