使用VisualVM对JAVA程序进行性能分析及调优

JAVA herman 5088浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。

VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。

本文将对 VisualVM如何快速上手使用编写一个shell脚本,大家只需要将其放到tomcat的bin目录中即可使用。本文实例使用的linux环境。shell脚本代码如下:

#!/bin/sh
#website为linux系统配置文件的一个路径,具体以自己部署的环境为准
cat /website/config/nac_sys.conf | grep "manager">>/dev/null
if [ $? == 0 ];then
    ETH=`cat /website/config/nac_sys.conf | grep "manager"|awk '{print $2}'`
else
    ETH="eth0"
fi
serverip=`ifconfig $ETH|egrep "inet addr:"|cut -d ":" -f2|awk '{print $1}'`
#serverip为linux服务器的出口ip

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=$serverip"

或者也可以将

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=自己的linux服务器的ip"

加入到tomcat的bin目录中的Catalina.sh最后,重启tomcat即可。如果是检测本地的程序,直接打开jdk(jdk1.6以上自带jvisualvm.exe)安装目录中jre/bin/jvisualvm.exe的程序,双击本地的VisualVM即可实现监控。如果监控远程的服务器,只需在远程节点上右键添加主机ip,再在主机ip上右键冒号后添加1099配置的端口即可实现监控。

注意:如果不能实现远程监控,请查看服务器上tomcat启动后是否有配置的1099端口正在监听。还有注意关闭远程主机的防火墙。

运行效果如下:

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号1:xmtxtt(5000人已满),微信号2:codedq(5000人已满),微信号3:xttblog(超2800)。备注:“xttblog”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 使用VisualVM对JAVA程序进行性能分析及调优