使用VisualVM對JAVA程序進行性能分析及調優

jopen 10年前發布 | 22K 次閱讀 VisualVM Java開發

開發大型 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程序進行性能分析及調優

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!