VisualVM使用

sualVM是JDK自帶的一個用於Java程序性能分析的工具java

在JDK安裝目錄的bin文件夾下名稱爲 jvisualvm.exe工具

 在左側選擇應用性能

(1)概述spa

 應用程序和運行時環境的基本信息插件

基本參數線程

PID:應用程序的進程ID
主機:應用程序運行的系統地址
主類:運行了main方法的類
參數:應用啓動時所傳遞的參數信息
JVM:當前的JVM信息
Java:當前使用的JDK信息
Java Home:JDK的位置
JVM標誌:啓動JDK時JVM使用的的標誌
出現OOME時生產堆dump:當前出現OOME時生產堆dump功能的開啓/禁用狀態

保存的數據3d

  顯示VisualVM存儲的當前應用程序的信息code

詳細信息blog

  JVM參數:配置的JVM啓動的參數信息進程

  系統屬性 :JVM運行的系統屬性

(2)監視

  展現監聽的當前應用程序的總體狀況

 CPU:CPU的使用百分比

內存:內存的佔用狀況,包括內存大小、最大值和已經使用的大小

  堆:堆內存的大小和堆內存使用狀況

  Metaspace:元空間內存的使用狀況

類:顯示了已經加載的類數量和共享類的數量

線程:顯示了應用程序在JVM中生存和守護線程的數量

堆dump:執行堆dump,在新的標籤頁打開,查看dump的詳細信息

(3)線程

展現了應用程序的線程數據,包括全部線程數、活動線程數、完成線程數

 線程dump:執行線程dump,在新標籤頁打開結果

(4)抽樣器

  抽取CPU和內存的樣例數據

  設置——設置抽樣參數

   CPU抽樣:

    CPU樣例:展現了方法級別CPU性能(執行的時間及佔比)
    線程CPU時間:反映了線程執行佔用cpu的時間和佔比

   內存抽樣

    堆柱狀圖:展現了內存佔用狀況

    每一個線程分配:展現了每一個線程分配的內存以及佔比

 

(5)Profile

  啓動和中止本地應用程序的概要分析會話

   CPU:點CPU按鈕,啓動一個 CPU性能分析會話 ,顯示 CPU 的使用率、方法的執行效率和頻率等相關數據

   內存:點擊「內存」按鈕將啓動一個內存分析會話,等 VisualVM 收集和統計完相關性能數據信息,將會顯示在性能分析結果

 

 (6)Visual GC

安裝插件

工具——》插件

 就會出現Visual CG 的標籤

   Spaces:分爲 Perm(Permanent Generation) 永久代,  Old 老年代和新生代

     A.永久代

      經過VM Args設置,eg:

        -XX:PermSize=1024m   (初始值

        -XX:MaxPermSize=1024m (最大值

    B.java堆(java heap)——Old 老年代+新生代

      經過VM Args設置,eg:

        -xms2048m (初始堆內存

        -Xmx2048m (最大堆內存

        -XX:+HeapDumpOnOutofMemoryError (內存異常打印dump

        -Xmn800m  (新生代內存

        -XX:SurvivorRatio=8 (新生代內存分配比例(8:1:1)

        由於Heap分爲新生代跟老年代,因此2018M-800M=1218M,老年代就是1218M(初始內存跟最大內存最好相等,防止內存不夠時擴充內存或者Full GC,致使性能下降)

      新生代:Eden 區+S0 survivor 區+S1 survivor 區,默認是8:1分配內存

   Graphs:以時間爲橫座標的狀態面板

    Compile Time:編譯時間表示虛擬機的 JIT 編譯器編譯熱點代碼的耗時

    Class Loader Time: class 的 load 和 unload 時間

    GC Time:

       18 collections ——自監視以來共 22 次GC, 包括 Minor GC 和 Full GC

      456.653ms 表示 gc 共花費了456.653ms      Last Cause: Allocation Failure 上次發生 gc 的緣由爲內存分配失敗

    Eden Space:

       Eden Space (1.328G,204.000M): 128.430M——Eden Space 最大可分配空間  340.500M,當前分配空間 185.000M,當前佔用空間 91.012M

      14 collections, 153.307ms——當前新生代發生 GC 的次數爲14次, 共佔用時間 153.307ms

    Survivor 0,Survivor 1:

     S0 和 S1 有一個是空閒的,這樣方便執行 minor GC,他們的最大分配空間是相同的,在 minor GC 時,S0 和S1 會互相切換

     Survivor 1 (453.500M, 33.500M) : 3.814M——S1 最大分配空間 453.500M, 當前分配空間33.500M, 已佔用空間3.814M

    Old Gen:

Old Gen (2.659G, 370.000M) :50.940M—— OldGen最大分配空間2.659G, 當前空間370.000M, 已佔用空間50.940M

4 collections, 306.346ms ——老年代發生了 4次 GC, 耗費了306.346ms的時間

老年代 GC 也叫作 Full GC, 在老年代 GC 時會伴隨着 Minor GC

    Metaspace:

     Perm Gen (1.096G, 109.375M) : 106.630M——最大可用空間1.096G,當前永久代空間109.375M,已佔用空間106.630M

注:

  若是顯示指定-XX:+UseParallelGC --新生代並行、老年代串行收集器 ,histogram柱狀圖會不支持當前收集器

相關文章
相關標籤/搜索