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

jopen 9年前

开发大型 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端口正在监听。还有注意关闭远程主机的防火墙。

运行效果如下:使用VisualVM对JAVA程序进行性能分析及调优

转载请注明出处:业余草: » 使用VisualVM对JAVA程序进行性能分析及调优