Eclipse内存分析器,但总是显示发生内部错误?

问题描述 投票:0回答:12
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid2584.hprof ...
Heap dump file created [106948719 bytes in 4.213 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at Main.main(Main.java:15)

但是当我通过 Eclipse Memory Analyser 打开头转储 java_pid2584.hprof 时,但总是有消息:

An internal error occurred during: 
"Parsing heap dump from **\java_pid6564.hprof'".Java heap space
java eclipse memory
12个回答
145
投票

问题是 Eclipse Memory Analyzer 没有足够的堆空间来打开堆转储文件。

您可以通过以下方式解决问题:

  1. 打开

    MemoryAnalyzer.ini
    文件

  2. 将默认值

    -Xmx1024m
    更改为更大的尺寸


60
投票

请注意,在 OS X 上,要增加分配给 MAT 的内存,您需要右键单击

mat.app
并显示包内容。
MemoryAnalyzer.ini
文件位于
/Contents/Eclipse
下。


17
投票

针对 MAC OS X El Capitan 中 Eclipse 中内存分析器插件的相同问题的解决方案。

我遇到了同样的问题,但是使用 eclipse 插件,并且应用程序文件夹中没有任何内存分析器应用程序。对我有用的解决方案是:

  1. 右键单击 Eclipse 图标并选择显示包内容。
  2. 转到目录>Eclipse
  3. 打开Eclipse.ini
  4. 将值 -Xmx1024m 更改为 -Xmx2048m
  5. 重新启动Eclipse

14
投票

在 OS X 11.5 (El Cap) 上修改

MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini
不起作用!这是因为它在不同的地方寻找
MemoryAnalyzer.ini

在我的电脑上,它正在寻找:

MemoryAnalyzer.app/Contents/Eclipse/MemoryAnalyzer.ini
但真正的.ini 文件是:
MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini

为了使更改生效,请将现有

.ini
文件复制到新位置。

要查找 MemoryAnalyzer 在哪里寻找 ini 文件,您可以运行:

sudo su
cd ...MemoryAnalyzer.app/Contents/MacOS/
dtruss ./MemoryAnalyzer 2>&1 | grep ini

8
投票

根据我的经验,将 MemoryAnalyzer.ini、Xms 和 Xmx 添加到最大作为您的材料可能性。 G1GC 更快,需要 -XX:-UseGCOverheadLimit,因为 gc 使用率可能很高且耗时,也许 -XX:+UseStringDeduplication 是消耗更少内存的关键

-vmargs
-Xms8g
-Xmx8g
-XX:-UseGCOverheadLimit
-XX:+UseG1GC
-XX:+UseStringDeduplication

6
投票

如果从 Eclipse 使用内存分析器,则编辑 eclipse.ini 文件以将 vm 参数增加到 -Xmx1024m 或更高。这对我有用。 http://wiki.eclipse.org/index.php/MemoryAnalyzer/FAQ#Out_of_Memory_Error_while_Running_the_Memory_Analyzer


5
投票

正如其他人所建议的,它的两步简单过程:-

  1. 从 MAT 安装目录中打开 MemoryAnalyzer.ini 文件。

  2. 将默认的 -Xmx1024m 更改为更大的尺寸,例如如果您必须分析 4GB 堆转储,则可以将 -Xmx1024m 替换为 -Xmx5g 或 -Xmx6g

欲了解更多详情,请参阅:- https://better-coding.com/solved-eclipse-mat-java-heap-space-error/


3
投票

如果您使用的是 Mac,请尝试使用 -data 选项运行 mat.app“文件夹”内的可执行文件,通过该选项您可以指定可写路径:

cd mat.app/Contents/MacOS
./MemoryAnalyzer -data <writable_path>

0
投票

我也尝试了这里的所有解决方案,但仍然遇到相同的错误,并且由于错误或未知的文件类型/编辑器关联,Eclipse 试图将 .hprof 文件作为文本文件打开。

解决方案:右键单击该文件,选择打开方式,然后选择其他,然后选择Eclipse Memory Analyzer。

使用 700MB 转储,并在约 600M 的 eclipse 堆上使用 2G 转储。


0
投票

尝试使用 Eclipse Memory Analyzer 1.15.0 和 Mac OS 13.6.5。

cd /Applications/MemoryAnalyzer.app/Contents/MacOS

./MemoryAnalyzer -vmargs -Xms4g -Xmx5g -XX:-UseGCOverheadLimit -XX:+UseG1GC -XX:+UseStringDeduplication

-2
投票

发生内部错误。 Java堆空间

Ans:转到您的项目工作空间 打开.setting文件夹 删除.setting文件夹中的所有文件。 可以编译后 现在没有错误像堆空间 享受吧:)


-3
投票

您可以减少应用程序内存限制,然后再次进行转储。 Eclipse 内存分析器将转储文件放入内存 - 我怀疑您的 Eclipse 内存少于应用程序的限制。

您也可以执行相反的操作,增加 Eclipse 的内存限制,但如果您的应用程序在服务器上运行,则内存大小将很难匹配。

© www.soinside.com 2019 - 2024. All rights reserved.