jvisualvm分析hprof文件

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

jvisualvm

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

jvisualvm分析hprof文件_第1张图片

对应参数配置

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

jvisualvm分析hprof文件_第2张图片

# 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

jvisualvm分析hprof文件_第3张图片

jvisualvm分析hprof文件_第4张图片

分析类

选择类 按照实例数或者大小排序
可以定位到内存溢出的代码位置
jvisualvm分析hprof文件_第5张图片

代码:

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

你可能感兴趣的:(jvm)