Java VisualVM初体验

本文介绍如何使用JavaVisualVM工具进行应用内存监控,包括如何查看应用的JVM参数、实时监控内存使用情况及理解堆内存监控曲线图,并提供代码示例说明如何获取运行时内存信息。

1、JDK路径下bin文件下有应用:jvisualvm.exe

预览:

 

2、选择自己要监听的正在运行的应用

(1)Java VisualVM应用列表仅显示在运行的应用

(2)服务多开时应用列表显示多个不同pid的应用

 

(3)通过查看应用JVM参数 -Dmaven.multiModuleProjectDirectory 的值来判断是哪个程序

 

3、代码取值

 

public String runtimeMemory() {
    Runtime run = Runtime.getRuntime();

    long max = run.maxMemory();//最大内存,JVM配置-Xmx的值
    long total = run.totalMemory();//已分配内存
    long free = run.freeMemory();//已分配内存中的未使用内存
    long using = total - free;//正在使用中的内存
    long usable = max - total + free;//最大可用内存

    return "最大内存: " + DF.format(max / (1024 * 1024.0)) + "M (100%); "
            + "已分配内存: " + DF.format(total / (1024 * 1024.0)) + "M (" + DF.format(total * 100.0 / max) + "%); "
            + "已使用内存: " + DF.format(using / (1024 * 1024.0)) + "M (" + DF.format(using * 100.0 / max) + "%); ";
}

 

 

 

(1)堆的监控曲线图y轴最大值是项目配置-Xmx的值,本例-Xmx1024m

(2)堆的监控曲线图黄色曲线表示“已分配内存”

(3)堆的监控曲线图蓝色曲线表示“已使用内存”

(4)堆的监控曲线图

       1)4:20到4:30时间段:蓝色曲线线性增长,到一定值后骤降,峰值点时发生了一次垃圾回收GC

       2)4:40到4:50时间段:程序跑业务代码,蓝色线稳步递增,已用内存稳步增加,CPU使用率高,垃圾回收频繁

       3)4:40到4:50时间段:随着蓝色线稳步增长,黄色线断崖式增高又降低,JVM临时性申请更多内存以应对逐渐增长的“已用内存”的需要

       4)4:50朝后:程序跑完,蓝色线和黄色线降低并趋于稳定

 

       5)5:00朝后:黄线稳定、蓝线周期性增降,垃圾回收周期性执行

 

4、其他

 

 

5、GC插件

(1)安装GC插件

 

(2)GC插件使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值