Java VisualVM初体验

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插件使用

猜你喜欢

转载自blog.csdn.net/MAOZEXIJR/article/details/81002375