jvisualvm 工具的使用

Visual GC 插件下载

打开 jvisualvm 工具之后,点击工具选项,然后点击插件
在这里插入图片描述
选中可用插件,可以发现,有很多的插件可安装
在这里插入图片描述
这里安装的是 Visual GC 插件
在这里插入图片描述
一步一步安装即可
在这里插入图片描述

代码示例

package com.java.demo;

import java.util.ArrayList;

/**
 * @author Woo_home
 * @create 2020/7/10 11:34
 */

public class HeapDemo {
    public static void main(String[] args){
    	// 这里一个 size 表示 1 M
        int size = 1024 * 1024 * 8;
        ArrayList<byte[]> list = new ArrayList<>();
        for (int i = 0; i < 1024; i++) {
            System.out.println("向 JVM 写入数据 " + (i + 1) + " M");
            try {
            	// 为了能在 jvisualvm 中能看到效果,这里设置延时 1 s
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 每秒往堆中写入一个数据
            list.add(new byte[size]);
        }
    }
}

运行即可在 jvisualvm 监听该程序对应的进程,点击 Visual GC 即可查看堆内存的使用情况

说明

在这里插入图片描述
整个区域划分为三个部分,分别为 spaces、graphs、histogram

spaces 区域

代表虚拟机内存分布情况,从图中可以看出,虚拟机被分为 Perm、Old、Eden、S0、S1

Perm

英文名叫做 Permanent Generation,我们称之为永久代,Java 8 之后称为元空间

通过 VM Args:-XX:PermSize=128m -XX:MaxPermSize=256m 设置初始值与最大值

Heap

Java 堆(Java Heap)。它包括老年代(对应图中的 Old 区域)新生代(对应图中的 Eden、S0、S1 三个统称为新生代,分为 Eden 区和两个 Survivor 区域),它们默认是 8:1:1 分配内存

通过 VM Args:-xms512m -Xmx512m -XX:+HeapDumpOnOutofMemoryError -XX:SurvivorRatio=8 设置初始堆内存、最大内存、内存异常打印 dump、新生代内存、新生代内存分配比例(8:1:1),因为 Heap 分为新生代和老年代,所以 512M - 100M = 412M,老年代就是 412M(初始内存跟最大内存最好相等,防止内存不够时扩充内存或者 Full GC,导致性能下降)

Graphs 区域

Compile Time(编译时间)

在这里插入图片描述
图中 996 compiles 表示编译总数,1.413 s 表示编译累计时间。一个脉冲表示一次 JIT 编译,窄脉冲表示持续时间短,宽脉冲表示持续时间长

Class Loader Time(类加载时间)

在这里插入图片描述
图中 1675 loaded 表示加载类数量,42 unloaded 表示卸载的数量,905.329ms 表示类加载花费的时间

GC Time

在这里插入图片描述
图中 5 collections 表示垃圾收集的总次数,468.449 ms 表示垃圾收集花费的时间,last cause 表示最近垃圾收集的原因

Eden Space(Eden 区)

在这里插入图片描述
图中括号内的 315.500 M 表示最大容量,15.000M 表示当前容量,后面的 9.873 M 表示当前使用情况, 1 collections 表示垃圾收集次数,4.732 ms 表示垃圾收集花费时间

Survivor 0 / Survivor 1(S0 和 S1 区)

在这里插入图片描述
图中括号内的 105.500 M 表示最大容量,2.500 M 表示当前容量,之后的 0 值是当前使用情况

Old Gen(老年代)

在这里插入图片描述
图中括号内的 633.500 M 表示最大容量,633.500 M 表示当前容量,后面的 632.474 M 表示当前使用情况,4 collections 表示垃圾收集次数,463.717 ms 表示垃圾收集花费时间

Metaspace(元空间)

在这里插入图片描述
图中括号内的 1.008 G 表示最大容量,9.750 M 表示当前容量,8.973 M 表示当前使用情况

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
jvisualvm是一个GUI工具,用于监视Java虚拟机的性能和内存使用情况,以下是使用jvisualvm的步骤: 1. 打开jvisualvm工具:在JDK安装目录下的bin文件夹中找到jvisualvm.exe并打开。 2. 连接到正在运行的Java应用程序:在jvisualvm主界面的左侧面板中,在“本地”或“远程”标签页中找到正在运行的Java应用程序,然后双击它。 3. 查看应用程序的运行状况:在jvisualvm的右侧面板中,可以查看应用程序的运行状况,包括CPU使用率、内存使用率、线程数等。 4. 分析内存使用情况:在jvisualvm的右侧面板中,选择“内存”选项卡,可以查看应用程序的内存使用情况,包括堆内存和非堆内存的使用情况、对象数量等。 5. 分析线程使用情况:在jvisualvm的右侧面板中,选择“线程”选项卡,可以查看应用程序的线程使用情况,包括线程数、线程状态等。 6. 分析类加载情况:在jvisualvm的右侧面板中,选择“类”选项卡,可以查看应用程序的类加载情况,包括已加载类的数量、加载类的时间等。 7. 分析垃圾回收情况:在jvisualvm的右侧面板中,选择“垃圾回收器”选项卡,可以查看应用程序的垃圾回收情况,包括垃圾回收器的类型、回收时间等。 总之,使用jvisualvm可以方便地监视Java应用程序的性能和内存使用情况,帮助我们分析和解决应用程序的性能问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值