java(jdk)內存溢出分析工具(VisualVM)

前言

VisualVM:

它是一個以監控、顯示本地或者遠程服務器 JVM工作情況,進行性能調優的工具。可以實現對JVM內存各個子池、CPU、垃圾收集器等方面進行監控,從而發現程序代碼中潛在的泄露點和配置問題。

問題淺出

我們在寫業務時有時候可能會出現一些莫名其妙的問題,比如內存溢出,換而言之就是內存實際大小不滿足於當前執行的內存大小,從而造成某些東西不工作導致崩潰

如何使用?

jdk一搬都攜帶該工具,位置在jdk安裝目錄的bin目錄裏面
例:
在這裏插入圖片描述
雙擊打開之後安裝GC插件
在這裏插入圖片描述

緊接着打包你要進行監控的jar

啓動jar時務必設置好JVM參數以及OOM內存溢出日誌輸出目錄

  1. 打包用於監控的jar包

在這裏插入圖片描述

  1. 用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行出的問題,由此可查出問題所在
    在這裏插入圖片描述

收尾階段

這個我也是剛剛使用,太多的東西不太熟悉,先總結一篇以後慢慢修正,先入門再說咯!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章