生成heap dump

  在查看内存泄露以及对内存问题中,要dump出当前内存堆存储快照,便于分析。有几种方法可以做,简介如下

一、intellij IDEA  

  由于我用的是intellij IDEA,所以没有介绍Eclipse的配置,当然网上有很多种。

1、run->EditConfigurations

2、配置VM options,这里设置为JVM在遇到OOM(OutOfMemoryError)时生成Dump文件,-XX:+HeapDumpOnOutOfMemoryError  ,当然也可以设置dump出的文件路径-XX:HeapDumpPath=.../dump。同时这里我设置了限制堆的大小为20M,且不可扩展。

3、运行你的程序,便会生成heap文件,自动命名格式如:java_pid128.hprof

二、使用jmap工具                                                          

  jmap是jdk安装时自带的dump工具,但是使用时,要知道java程序的pid,使用格式为:

jmap -dump:file=D:\temp\heapdumps\dump.bin 1234

三、直接在程序中使用jmap                                              

  在程序中,为了获取我们需要引入 java.lang.management.ManagementFactory包.

import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by pc on 14-11-25.
 */
public class HeapOOM {
    static class OOMObject{

    }
    public static void main(String [] args){
        String name = ManagementFactory.getRuntimeMXBean().getName();
        String pid = name.substring(0, name.indexOf("@"));
        String[] cmd = { "jmap ", "-dump:file=E:\\code\\src\\Java\\jvm\\heap\\dump\\dump1.bin", pid };
        try {
            Process p = Runtime.getRuntime().exec(cmd);
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<OOMObject> list=new ArrayList<OOMObject>();
        while(true){
            list.add(new OOMObject());
        }
    }
}
时间: 2024-10-09 03:29:11

生成heap dump的相关文章

[Android]生成heap dump文件(.hprof)

Android生成heap dump文件(.hprof) 一个heap dump就是一个程序heap的快照,可以获知程序的哪些部分正在使用大部分的内存. 它保存为一种叫做HPROF的二进制格式.对于Android执行android.os.Debug.dumpHprofData(hprofPath)方法后所生成的文件,需要把.hprof文件从Dalvik格式转换成J2SE HPROF格式.使用AndroidSDK提供的hprof-conv工具可执行该转换操作. hprof-conv dump.hp

转:Java - Heap Dump, Thread Dump and Core Dump

Dump 就是对程序运行时内存上的信息进行转储, 让我们可以查看程序当时的运行情况. Dump 对于调优和排错是非常有用的工具. Heap Dump Java 运行时对象分配在堆内存上, Heap dump 就是对堆内存进行转储. 生成 Heap dump 的生成有两种方式: 1) 运行 Java 程序时添加 -XX:+HeapDumpOnOutOfMemoryError 选项, 这样当程序发生 Out of Memory 错误时就会自动生成一份 Heap dump. 2) 使用 jmap 工具

[MAT]使用MAT比較多个heap dump文件

使用MAT比較多个heap dump文件 调试内存泄露时,有时候适时比較2个或多个heap dump文件是非常实用的.这时须要生成多个单独的HPROF文件. 以下是一些关于怎样在MAT里比較多个heap dumps的内容(有一点复杂): 1.     第一个HPROF 文件(usingFile > Open Heap Dump ). 2.     打开Histogram view. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29kaW5v/fon

[MAT]使用MAT比较多个heap dump文件

使用MAT比较多个heap dump文件 调试内存泄露时,有时候适时比较2个或多个heap dump文件是很有用的.这时需要生成多个单独的HPROF文件. 下面是一些关于如何在MAT里比较多个heap dumps的内容(有一点复杂): 1.     第一个HPROF 文件(usingFile > Open Heap Dump ). 2.     打开Histogram view. 图1. Histogram View按钮 3.     在NavigationHistory view里 (如果看不

java程序性能分析之thread dump和heap dump

转自:https://www.cnblogs.com/toSeeMyDream/p/7151635.html 一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题.这些文件记录了JVM运行期间的内存占用.线程执行等情况,这就是我们常说的dump文件.常用的有heap dump和thread dump(也叫javacore,或java dump).我们可以这么理解:heap dump记录内存信息的,thread dump是记

使用VisualVM查看Java Heap Dump

浏览Heap Dump 可以使用VisualVM浏览heap dump文件的内容,从而快速查看在堆中分配的对象.Heap dumps在主窗口的heap dump子标签页中显示.你可以打开保存在本地的heap dump文件(.hprof)或者使用VisualVM捕获正在运行的程序的heap dumps. 一个heap dump是Java虚拟机(JVM)在某一时刻所有对象的快照.JVM从堆中为所有的类实例和数组分配内存.当一个对象不再被使用并且没有对它的引用时,垃圾回收器回收其堆内存.通过查看堆,你

eclipse MAT分析heap dump

官方参考文档:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fanalyzingthreads.html 代码 /** * -XX:+PrintGC -Xloggc:gc.log * * VM args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */ public class HeapOOM { static class OO

linux下生成core dump文件方法及设置

core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the s

Java Heap dump文件分析工具jhat简介

jhat 是Java堆分析工具(Java heap Analyzes Tool). 在JDK6u7之后成为标配. 使用该命令需要有一定的Java开发经验,官方不对此工具提供技术支持和客户服务. 用法: jhat [ options ] heap-dump-file 参数: options 可选命令行参数,请参考下面的 Options heap-dump-file 要查看的二进制Java堆转储文件(Java binary heap dump file). 如果某个转储文件中包含了多份 heap d