前言
VisualVM:
它是一個以監控、顯示本地或者遠程服務器 JVM工作情況,進行性能調優的工具。可以實現對JVM內存各個子池、CPU、垃圾收集器等方面進行監控,從而發現程序代碼中潛在的泄露點和配置問題。
問題淺出
我們在寫業務時有時候可能會出現一些莫名其妙的問題,比如內存溢出,換而言之就是內存實際大小不滿足於當前執行的內存大小,從而造成某些東西不工作導致崩潰
如何使用?
jdk一搬都攜帶該工具,位置在jdk安裝目錄的bin目錄裏面
例:
雙擊打開之後安裝GC插件
緊接着打包你要進行監控的jar
啓動jar時務必設置好JVM參數以及OOM內存溢出日誌輸出目錄
- 打包用於監控的jar包
- 用jvm參數以及oom參數啓動
說明(我這裏是測試環境僅供參考)>:
-Xms100m 啓動時佔用內存爲100
-Xmx100m 最大支持內存佔用爲100
-XX:HeapDumpPath=D:\logs 如果出現內存溢出即輸出日誌到logs目錄下,文件名默認也行,你自己設置也可以
-Dcom.sun.management.jmxremote.port=9999 模擬該jar包監控時遠程調用接口,這裏隨便寫一個不佔用的端口即可
-Djava.rmi.server.hostname=192.168.0.108 當前主機IP
其它參數含義自行百度
java -Dserver.port=5555
-Xms100m
-Xmx100m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=D:\logs
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.0.108
-jar zuulServer.jar
啓動完成之後圖形界面查看如下
- 模擬內存溢出接口
訪問該接口輸出dump日誌文件在D盤logs目錄下
如圖所示
- 使用Visual-GC打開該文件分析
流程:選擇監控的jar點擊裝入然後選擇目錄篩選hprof選擇日誌文件打開
打開之後如下圖所示
點擊進入錯誤線程查看溢出問題
此處查看得知68行出的問題,由此可查出問題所在
收尾階段
這個我也是剛剛使用,太多的東西不太熟悉,先總結一篇以後慢慢修正,先入門再說咯!!!