在上一期主要講到JVM優化的概念及經驗。這一節章節去講述相關工具的基本使用。html
JDK自帶,VisualVM 是一款免費的,集成了多個 JDK 命令行工具的可視化工具,它能爲您提供強大的分析能力,對 Java 應用程序作性能分析和調優。這些功能包括生成和分析海量數據、跟蹤內存泄漏、監控垃圾回收器、執行內存和 CPU 分析,同時它還支持在 MBeans 上進行瀏覽和操做。java
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jj.xx.yy.zz -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"git
chmod +w jmxremote.password
chmod 0400 jmxremote.passwordgithub
主要信息vim
主要信息jvm
cpu指標工具
如cpu是多核,若是是n核,這裏顯示的單核平均佔用
在經過top命令,看到的是 乘上n的結果,VisualVM顯示 10.2/4(核數) =2.5%
操做性能
主要信息優化
須要配置url,否則會報如下出錯
https://visualvm.github.io/pl... 在這個網站選擇合適的插件地址網站
填入URL地址,肯定
配置成功後,在可用插件列表
VIsual GC
查看服務GC狀態,須要配置jstatd並啓動
cd /usr/local/src/jdk1.8.0_131/bin/ vim jstatd.all.policy
加入如下代碼
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
若是沒有配置{java.home},填寫jdk的絕對路徑也可行
在jdk.home/bin下啓動
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=ip.xx.yy.zz -J-Djava.rmi.server.logCalls=true
更改以上Ip ip.xx.yy.zz地址
指定服務的端口號,使用默認端口1099。確認1099沒有防火牆攔截
配置jstated鏈接
VisualGC界面
注意點:
內存大小分狀況
主要關注 GC Time長短及間隔
Tracer
能夠查詢Heap,PerGen,Classes, Threads
![]()
如圖
Tracer能夠監控不少項目
利用VisualVm檢查full GC
利用sampler的分析內存採集,肯定問題代碼
內存視圖,查看當前哪些業務對象比較多,並存在一直遞增的趨勢
線程視圖,查看哪些線程分配的內存最多
IntelliJ Idea集成VisualVm
方便本地壓測監控JVM狀況
本節主要講解VisualVm的使用以及經常使用插件的使用,好的工具對於找到問題有事半功倍的效果。在實踐中理解理論知識。