VisualGC插件使用

下载安装VisualVM

下载地址:Visual VM

mac系统选择macOS Application Bundle,下载完成后,双击dmg包安装即可,之后双击启动。

安装Visual GC 插件

点击菜单栏Tools,选择Pulgins,在第二个选项中找到Visual GC,选中,点击Install,然后一路下一步即可安装成功,如下图
VisualGC插件使用_第1张图片

插件界面介绍

安装完插件后重启软件,然后打开idea,之后可以在左边的Local中看到启动的idea应用,双击即可进入监控页面,点击Visual GC可以看到软件运行时的内存变化情况。如下图:

整个界面分为三个区域,分别为:Spaces、Graphs和Histogram。下面为其介绍:

Spaces

VisualGC插件使用_第2张图片
上图呈现了程序运行时我们比较关注的几个区域的内存使用情况。

  • Metaspace:方法区,如果JDK1.8之前的版本,就是Perm,JDK7和之前的版本都是以永久代(PermGen)来实现方法区的,JDK8之后改用元空间来实现(MetaSpace)。
  • Old:老年代
  • Eden: 新生代Eden区
  • S0和S1:新生代的两个 Survivor 区

Graphs

  • Compile Time:编译情况
    11459 compoles - 29.950s 表示编译总数为11459,编译总耗时为29.950s。
    一个脉冲表示一次JIT编译,脉冲越宽表示编译时间越长。

  • Class Loader Time:类加载情况
    23564 loaded,326 unloaded - 18.490s表示已加载的数量为23564,卸载的数量为326,耗时为 18.490s。

  • GC Time:总的(包含新生代和老年代)gc情况记录
    32 collections,288.879ms Last Cause:Allocation Failure表示一共经历了32次gc(包含Minor GC和Full GC),总共耗时288.879ms。

  • Eden Space:新生代Eden区内存使用情况
    (273.062M,34.125M): 32.796M,32 collections,288.879ms表示Eden区的最大容量为273.062M,当前容量为34.125M,当前已使用32.796M,从开始监控到现在在该内存区域一共发生了32次gc(Minor GC),gc总耗时为288.879ms。

  • Survivor 0和Survivor 1:新生代的两个Survivor区内存使用情况
    (34.125M,4.250M):3.126M表示该Survivor区的最大容量为34.125M(默认为Eden区的1/8),当前已用3.126M。

  • Old Gen:老年代内存使用情况
    (682.688M,218.871M):137.316M,0 collections,0ms表示老年区的最大容量为682.688M,当前容量为218.871M,当前已用137.316MM,从开始监控到现在在该内存区域一共发生了0次gc(Full GC),gc总耗时为0ms,换算下可以看出单次Full GC要比Minor GC耗时长很多。

  • Metaspace:方法区内存使用情况
    (1.41G,145.496M):137.098M表示方法区最大容量为1.41G,当前容量为145.496M,当前使用量为137.098M。

Histogram

  • Tenuring Threshold:我们知道Survivor区中的对象有一套晋升机制,就是其中的每个对象都有一个年龄标记,每当对象在一次Minor GC中存活下来,其年龄就会+1,当对象的年龄大于一个阈值时,就会进入老年代,这个阈值就是Tenuring Threshold,要注意这个值不是固定不变的,一般情况下Tenuring Threshold会与Max Tenuring Threshold大小保持一致,可如果某个时刻Servivor区中相同年龄的所有对象的内存总等于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中不同年龄段对象分布.

本文摘录自(简书: 链接: Visual GC 插件使用)

你可能感兴趣的:(JVM,插件,Java,java,jvm,plugin)