一,下載Jprofiler安裝包,解壓
jprofiler_linux_9_2.sh
jprofiler_windows-x64_9_2.exe
二,安裝jprofile服務端
1,把jprofiler_linux_9_2.sh 上傳到服務器/usr/local/jprofiler路徑下
2,賦權限chmod 777 jprofiler_linux_9_2.sh再執行 sh jprofiler_linux_9_2.sh(根據提示一路回車)
3,默認安裝在/opt/jprofiler7目錄下
三,先安裝windowns客戶端
安裝完后破解:
接着下一步就安裝完成了,打開出現這頁面
四,linux和windowns都安裝完成以后,就可以配置tomcat了
1,在tomcat的的bin目錄下有個catalina.sh文件,打開添加如下配置
JAVA_OPTS="-Xms128m -Xmx512m -Xss256k -XX:PermSize=64m -XX:MaxPermSize=256m -agentpath:/opt/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849 -Xbootclasspath/a:/opt/jprofiler9/bin/agent.jar -d64"
2,重啟啟動tomcat
3,開始建立連接:第一步
第二步:
第三步:
第四步:
第五步:
第六步:
第七步:
第八步:
第九步:
第十步:
第十一步:
連接成功,后台程序就繼續啟動了
五,我們來對一個有內存溢出的程序進行監控
我們這里主要看Live memory和CPU views
我們首先來看Live memory
在這里我們看到的是當前tomcat的對象使用情況,圖中顏色的線條表示當前對象被引用的次數和大小
"Mark Current"---來將當前內存使用情況作為參照;點擊后會顯示“Difference”列,該列會列出對象數量的變化和變化比率
接着我們操作應用程序看一下內存的增長情況
我們可以看到該對象內存增長的幅度,達到了31%
接着我們可以執行一下GC,看內存是否被釋放一部分出來
我們發現該對象占用的內存並未釋放,可以確定有內存溢出,那么接下來我們具體定位一下
我們選中這一條數據進行如下操作:右鍵選中第一條或者點擊上面的show in heap walker都可以
出現下圖,我們來進行如此操作:
會出現該對象的類,我們通過點擊+號就可以追蹤到引用該類對象的程序和文件,如圖:
上圖中出現黃色的表示該引用消耗了內存,直接定位到index_jsp文件,說明該文件內部程序引起了內存溢出問題