解析堆转储文件

Posted

技术标签:

【中文标题】解析堆转储文件【英文标题】:Parsing heap dump file 【发布时间】:2012-03-02 10:00:08 【问题描述】:

我有一个应用程序,显然我创建了太多对象,我收到以下消息:

java.lang.OutOfMemoryError:Java 堆空间 将堆转储到 java_pid2468.hprof ... 已创建堆转储文件 [1087703293 字节在 18.711 秒内] 线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间

但是我在MAT里安装了插件,我想看看我建了多少个对象,哪些对象占用的内存最多。 但是,当我想解析 hprof 文件时,我收到以下错误消息:

在“从 'C:\Users\sekulicd\workspace\Csv_validation_MyIsam\java_pid2468.hprof' 解析堆转储”期间发生内部错误。 Java 堆空间

hprof 文件大小为 1,087,703,293 字节,我需要这些问题的答案:

    解析是否因 hprof 文件大小而失败? 我可以只为那些没有发生错误的项目解析 hprof 文件吗 “ java.lang.OutOfMemoryError: Java 堆空间” ? 有没有办法解析这个文件(1,087,703,293 字节)?

【问题讨论】:

【参考方案1】:

尝试增加堆的大小,即使解析转储,它似乎也太小了。看看这个post。

【讨论】:

我的堆最大值是 371MB。够了吗? 如果你试图处理一个 1GB 的转储文件,堆必须比这个大!试试 1.5GB - 2GB 我意识到,我增加了堆大小,现在工作正常,谢谢。

以上是关于解析堆转储文件的主要内容,如果未能解决你的问题,请参考以下文章

Sun JDK 能否在 JVM 崩溃时生成核心/堆转储文件?

捕获系统堆转储数据关闭

将堆栈和堆内存转储到文件,然后将其加载回 RAM?

java堆转储文件太大打不开怎么办

jvisualvm:卡在“加载堆转储”屏幕上

Java堆转储在Google App引擎标准环境中?