利用jvisualvm分析JVM,进行性能调优
什么是jvisualvm?
jvisualvm是JDK自帶分析工具。
可分析JDK1.6及其以上版本的JVM運行時的JVM參數、系統參數、堆棧、CPU使用等信息。可分析本地應用及遠程應用。
在JDK1.6以上版本中自帶。
工具在哪找?
在jdk包中:%JAVA_HOME%binjvisualvm.exe
怎么用?
1.進入JVM進程
進入工具后,在工具左側即可選中當前運行的JAVA進程,雙擊可查看進程詳情。
2.查看運行環境及JVM參數
3.查看JVM垃圾回收、進程等
主要是為了查看垃圾回收次數,頻繁的垃圾回收對系統性能也有影響。
4.分析應用性能
利用這個工具分析應用性能效果杠杠的,主要是利用抽樣器統計每個線程中,每個方法的執行時間,這樣就能看到一次請求過程中,到底是哪個方法/查詢導致響應時間長。
4.1點開抽樣器,點擊CPU,進行CPU抽樣
4.2抽樣一段時間后,點擊快照,對從點擊抽樣開始的這段時間,進行CPU使用的統計。
4.3然后就能看到這段時間里,每個方法被使用的總時間以及時間占比啦,調用堆棧可一直追蹤至native方法。
這樣就可以很輕松的分析出,到底是哪個方法占了我寶貴的時間!
5.分析遠程應用
如果要分析遠程應用,需要遠程服務暴露JMX服務,然后本地再用該工具進行連接。所以需要對遠程服務的JVM啟動參數進行配置。
5.1在JVM啟動參數中增加JMX配置:
#建立鏈接的端口 JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8090" #不啟用ssl JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS" #不啟用登陸驗證 JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS" #rmiServer JAVA_OPTS="-Djava.rmi.server.hostname=10.137.126.42 $JAVA_OPTS"#啟動命令 java $JAVA_OPTS -jar jarName.jar >/dev/null 2>&1 &5.2注意服務器開放端口
遠程服務啟動后,除配置端口外,還會開放兩個隨機端口,本地服務還會訪問這兩個隨機端口,所以在有網絡權限限制的時候,需要把本地 -> 服務器高位端口(10000-65535) 都申請允許訪問。
5.3最后本地遠程添加主機,建立JMX鏈接即可。
總結
以上是生活随笔為你收集整理的利用jvisualvm分析JVM,进行性能调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python垃圾回收机制(GC)相关问题
- 下一篇: 汇编基本命令整理