首页 > 代码库 > 生成heap dump
生成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()); } }}
生成heap dump
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。