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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

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

發(fā)布時(shí)間:2024/1/8 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装Java Visualvm监控堆内存和参数说明 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

安裝Java Visualvm監(jiān)控堆內(nèi)存和參數(shù)說(shuō)明

1.概述

這篇文章介紹使用Java Visualvm工具監(jiān)控堆內(nèi)存VisualGC插件的安裝以及監(jiān)控堆內(nèi)存參數(shù)說(shuō)明。

摘要

  • VisualGC插件安裝
  • VisualGC監(jiān)控Jmeter堆內(nèi)存案例
  • VisualGC監(jiān)控界面參數(shù)說(shuō)明

2.安裝VisualGC插件

2.1.打開(kāi)Java Visualvm

本地安裝java后,使用cmd命令打開(kāi)Java Visualvm工具。

jvisualvm

2.2.安裝VisualGC插件

Java Visualvm默認(rèn)安裝插件網(wǎng)站已經(jīng)關(guān)閉,將插件移到了gitHub上,下面我們通過(guò)修改下載地址安裝插件。

1.打開(kāi)插件下載官網(wǎng)

插件官網(wǎng):https://visualvm.github.io/plugins.html

2.復(fù)制插件地址

點(diǎn)擊Plugins進(jìn)入插件頁(yè)面,點(diǎn)擊Plugins Centers進(jìn)入插件中心

根據(jù)自己本地安裝java的版本選擇對(duì)應(yīng)版本的插件,例如我的是java8,復(fù)制JDK8對(duì)應(yīng)插件地址。

3.修改插件下載地址

點(diǎn)擊Java Visualvm的 工具——>插件,在設(shè)置中點(diǎn)擊編輯粘貼我們復(fù)制的插件地址

4.安裝VisualGC插件


安裝VisualG插件后,點(diǎn)擊VisualVM就可以看到插件監(jiān)控效果。
VisualVM監(jiān)控的就是這個(gè)程序自身的堆內(nèi)存使用情況。

3.VisualGC監(jiān)控Jmeter堆內(nèi)存案例

  • Visualvm工具能夠自動(dòng)發(fā)現(xiàn)本機(jī)上所有java程序,不需要手動(dòng)添加連接地址。例如我們監(jiān)控Jmeter程序堆內(nèi)存使用情況,首先啟動(dòng)Jmeter程序。

  • 啟動(dòng)Jmeter程序后,在Visualvm會(huì)自動(dòng)發(fā)現(xiàn)Jmeter程序,并顯示在窗口中。

  • 雙擊Jmeter就可以打開(kāi)監(jiān)控界面

4.VisualGC監(jiān)控界面參數(shù)說(shuō)明

下面重點(diǎn)對(duì)VisualGC監(jiān)控界面各個(gè)區(qū)域的參數(shù)做一個(gè)介紹,在看到這些參數(shù)時(shí)我們知道了他代表的含義就可以對(duì)被監(jiān)控程序的堆內(nèi)存進(jìn)行分析
下面圖根據(jù)布局可分為三個(gè)區(qū)域,分別是Spaces、Graphs和Histogram,下面就逐個(gè)區(qū)域介紹。

1.Spaces區(qū)域


該區(qū)域通過(guò)柱狀圖方式展示堆內(nèi)存運(yùn)行情況

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

2.Graphs區(qū)域


該區(qū)域包含了編譯、類加載、GC執(zhí)行統(tǒng)計(jì)、堆內(nèi)存使用情況等幾個(gè)方面數(shù)據(jù)展示

  • Compile Time:編譯情況
    5794 compoles - 11.682s 表示編譯總數(shù)為5794 ,編譯總耗時(shí)為11.682s。
    一個(gè)脈沖表示一次JIT編譯,脈沖越寬表示編譯時(shí)間越長(zhǎng)。

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

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

  • Eden Space:新生代Eden區(qū)內(nèi)存使用情況
    (1.000G,44.000M): 27.000M,14 collections,75.425ms表示Eden區(qū)的最大容量為1G,當(dāng)前初始值容量為44.000M,當(dāng)前已使用27.000M,從開(kāi)始監(jiān)控到現(xiàn)在在該內(nèi)存區(qū)域一共發(fā)生了14次gc(Minor GC),gc總耗時(shí)為75.425ms。
    Eden區(qū)的最大容量是我們?cè)O(shè)置的最大堆內(nèi)存,程序運(yùn)行時(shí)如果超過(guò)該值就會(huì)發(fā)生內(nèi)存移除錯(cuò)誤,當(dāng)前初始值容量是根據(jù)當(dāng)前使用堆內(nèi)存的情況動(dòng)態(tài)調(diào)整,如果使用堆內(nèi)存呈上升趨勢(shì),那么初始值也會(huì)上升,知道最大值。反之下降。

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

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

  • Metaspace:方法區(qū)內(nèi)存使用情況
    (1.045G,54.613M):53.482M表示方法區(qū)最大容量為1.045G,當(dāng)前容量為54.613M,當(dāng)前使用量為53.482M。

3.Histogram區(qū)域


Histogram區(qū)域主要展示Survivor區(qū)內(nèi)存使用情況

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

  • Max Tenuring Threshold:表示新生代中對(duì)象的最大年齡值,這個(gè)值在JDK1.8中默認(rèn)為6,在JDK1.7及之前的版本中默認(rèn)為15,可以通過(guò)參數(shù)-XX:MaxTenuringThreshold來(lái)指定。

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

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

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。