jvisualvm是jdk1.8自带的dump 文件分析工具,hprof文件是 jvm 有OutOfMemory异常出现的时候,JVM就会将当前的虚拟机的堆等信息放入hprof文件中,名字是大概java_pid加上进程号,比如:java_pid11656.hprof。

jvisualvm

jvisualvm工具是jdk自带的分析工具,在jdk11 没有发现

在这里插入图片描述

对应参数配置

分析hprof文件过程计算量比较大,也比较消耗内存,可以修改对应配置参数

在这里插入图片描述

# Options used by VisualVM launcher by default:
# (can be overridden by explicit command line switches)
#

visualvm_default_options="-J-client -J-Xms124m -J-Xmx512m -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.d3d=false -J-Dnetbeans.keyring.no.master=true -J-Dplugin.manager.install.global=false"
# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea

在这里插入图片描述

在这里插入图片描述

分析类

选择类 按照实例数或者大小排序
可以定位到内存溢出的代码位置
在这里插入图片描述

代码:

package com.fancv.jvm;

import java.util.LinkedList;
import java.util.List;

public class MyOutofMemory {

    public static void main(String args[]) {

        List<Demo> mylist = new LinkedList<>();
        while (Boolean.TRUE) {
            mylist.add(new Demo());
        }
    }

}

class Demo {

    public Demo() {
    }
}

启动参数:

-XX:+HeapDumpOnOutOfMemoryError -Xmx200m  -Xmx300m
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐