日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

安装Java Visualvm监控堆内存和参数说明

發布時間:2024/1/8 java 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装Java Visualvm监控堆内存和参数说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝Java Visualvm監控堆內存和參數說明

1.概述

這篇文章介紹使用Java Visualvm工具監控堆內存VisualGC插件的安裝以及監控堆內存參數說明。

摘要

  • VisualGC插件安裝
  • VisualGC監控Jmeter堆內存案例
  • VisualGC監控界面參數說明

2.安裝VisualGC插件

2.1.打開Java Visualvm

本地安裝java后,使用cmd命令打開Java Visualvm工具。

jvisualvm

2.2.安裝VisualGC插件

Java Visualvm默認安裝插件網站已經關閉,將插件移到了gitHub上,下面我們通過修改下載地址安裝插件。

1.打開插件下載官網

插件官網:https://visualvm.github.io/plugins.html

2.復制插件地址

點擊Plugins進入插件頁面,點擊Plugins Centers進入插件中心

根據自己本地安裝java的版本選擇對應版本的插件,例如我的是java8,復制JDK8對應插件地址。

3.修改插件下載地址

點擊Java Visualvm的 工具——>插件,在設置中點擊編輯粘貼我們復制的插件地址

4.安裝VisualGC插件


安裝VisualG插件后,點擊VisualVM就可以看到插件監控效果。
VisualVM監控的就是這個程序自身的堆內存使用情況。

3.VisualGC監控Jmeter堆內存案例

  • Visualvm工具能夠自動發現本機上所有java程序,不需要手動添加連接地址。例如我們監控Jmeter程序堆內存使用情況,首先啟動Jmeter程序。

  • 啟動Jmeter程序后,在Visualvm會自動發現Jmeter程序,并顯示在窗口中。

  • 雙擊Jmeter就可以打開監控界面

4.VisualGC監控界面參數說明

下面重點對VisualGC監控界面各個區域的參數做一個介紹,在看到這些參數時我們知道了他代表的含義就可以對被監控程序的堆內存進行分析
下面圖根據布局可分為三個區域,分別是Spaces、Graphs和Histogram,下面就逐個區域介紹。

1.Spaces區域


該區域通過柱狀圖方式展示堆內存運行情況

  • Metaspace:方法區,如果JDK1.8之前的版本,就是Perm,JDK7和之前的版本都是以永久代- (PermGen)來實現方法區的,JDK8之后改用元空間來實現(MetaSpace)。
  • Old:老年代
  • Eden: 新生代Eden區
  • S0和S1:新生代的兩個 Survivor 區

2.Graphs區域


該區域包含了編譯、類加載、GC執行統計、堆內存使用情況等幾個方面數據展示

  • Compile Time:編譯情況
    5794 compoles - 11.682s 表示編譯總數為5794 ,編譯總耗時為11.682s。
    一個脈沖表示一次JIT編譯,脈沖越寬表示編譯時間越長。

  • Class Loader Time:類加載情況
    9480 loaded,0 unloaded - 5.561s表示已加載的數量為9480 ,卸載的數量為0,耗時為5.561s。

  • GC Time:總的(包含新生代和老年代)gc情況記錄
    16 collections,140.800ms Last Cause:G1 Evacuation Pause表示一共經歷了16次gc(包含Minor GC和Full GC),總共耗時140.800。最后一次GC原因G1 Evacuation Pause

  • Eden Space:新生代Eden區內存使用情況
    (1.000G,44.000M): 27.000M,14 collections,75.425ms表示Eden區的最大容量為1G,當前初始值容量為44.000M,當前已使用27.000M,從開始監控到現在在該內存區域一共發生了14次gc(Minor GC),gc總耗時為75.425ms。
    Eden區的最大容量是我們設置的最大堆內存,程序運行時如果超過該值就會發生內存移除錯誤,當前初始值容量是根據當前使用堆內存的情況動態調整,如果使用堆內存呈上升趨勢,那么初始值也會上升,知道最大值。反之下降。

  • Survivor 0和Survivor 1:新生代的兩個Survivor區內存使用情況
    (1.000G,1.000M):1.000M表示該Survivor區的最大容量為1G(默認為Eden區的1/8),當前已用1.000M。

  • Old Gen:老年代內存使用情況
    (1.000M,83.000M):57.172M,2 collections,65.375ms表示老年區的最大容量為1G,當前容量為83.000M,當前已用57.172M,從開始監控到現在在該內存區域一共發生了2次gc(Full GC),gc總耗時為65.375ms,換算下可以看出單次Full GC要比Minor GC耗時長很多。

  • Metaspace:方法區內存使用情況
    (1.045G,54.613M):53.482M表示方法區最大容量為1.045G,當前容量為54.613M,當前使用量為53.482M。

3.Histogram區域


Histogram區域主要展示Survivor區內存使用情況

  • Tenuring Threshold:我們知道Survivor區中的對象有一套晉升機制,就是其中的每個對象都有一個年齡標記,每當對象在一次Minor GC中存活下來,其年齡就會+1,當對象的年齡大于一個閾值時,就會進入老年代,這個閾值就是Tenuring Threshold,要注意這個值不是固定不變的,一般情況下Tenuring Threshold會與Max Tenuring Threshold大小保持一致,可如果某個時刻Survivor區中相同年齡的所有對象的內存總等于Survivor空間的一半,那Tenuring Threshold就會等于該年齡,同時大于或等于該年齡的所有對象將進入老年代。

  • Max Tenuring Threshold:表示新生代中對象的最大年齡值,這個值在JDK1.8中默認為6,在JDK1.7及之前的版本中默認為15,可以通過參數-XX:MaxTenuringThreshold來指定。

  • Desired Survivor Size:Survivor空間大小驗證閾值(默認是survivor空間的一半),用于給Tenuring Threshold判斷對象是否提前進入老年代。

  • Current Survivor Size:當前Survivor空間大小,單位為字節(Byte,B)

  • Histogram柱狀圖:表示Survivor中不同年齡段對象分布。

總結

以上是生活随笔為你收集整理的安装Java Visualvm监控堆内存和参数说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。