Eclipse Memory Analyser,but always shows An internal error occurred?

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)

But when i open head dump java_pid2584.hprof via Eclipse Memory Analyser,but there is always message:

An internal error occurred during:
"Parsing heap dump from **\java_pid6564.hprof'".Java heap space
71439 次浏览

您可以减少应用程序内存限制,然后再次转储。Eclipse Memory Analyser 将转储文件放入内存——我怀疑 Eclipse 的内存比应用程序的限制要少。

您也可以做相反的事情,增加 Eclipse 的内存限制,但是如果您的应用程序在服务器上工作,那么在内存大小方面将很难与之匹配。

问题是 Eclipse 内存分析器没有足够的堆空间来打开堆转储文件。

你可以这样解决这个问题:

  1. 打开 MemoryAnalyzer.ini文件

  2. 将默认的 -Xmx1024m更改为更大的大小

发生了一个内部错误

回答: 去你的项目工作空间 打开。设置文件夹 删除所有文件。设置文件夹。 在你可以编译之后 现在没有像堆空间一样的错误了 享受:)

我在这里也尝试了所有的解决方案,但仍然得到相同的错误,原因是 eclipse 试图打开。由于错误或未知的文件类型/编辑器关联,hprof 文件作为文本文件。

解决方案: 右键单击文件,选择 open with,然后选择 Other,并选择 Eclipse Memory Analyzer。

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

注意,在 OS X 上,为了增加分配给 MAT 的内存,需要右键单击 mat.app并显示包内容。MemoryAnalyzer.ini文件在 /Contents/Eclipse下。

如果从 Eclipse 使用 Memory Analyser,则编辑 Eclipse.ini 文件,将 vm 参数增加到-Xmx1024m 或更高。这招对我很管用。 Http://wiki.eclipse.org/index.php/memoryanalyzer/faq#out_of_memory_error_while_running_the_memory_analyzer

在 OS X 11.5(El Cap)上修改 MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini不起作用!这是因为它在另一个地方寻找 MemoryAnalyzer.ini

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

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

为了使更改生效,请将现有的 .ini文件复制到新位置。

要找到 Memory Analyzer 在哪里查找 ini 文件,可以运行:

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

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

我面临着同样的问题,但与 Eclipse 插件,我没有任何内存分析应用程序在应用程序文件夹。对我有效的解决办法是:

  1. 右击 Eclipse 图标并选择 Show Package Content。
  2. 转至目录 > Eclipse
  3. 打开 Eclipse.ini
  4. 更改值-Xmx1024m 为-Xmx2048m
  5. 重启 Eclipse

如果你正在使用 Mac,尝试运行 mat.app‘ file’with-data 选项中的可执行文件,通过它你可以指定一个可写路径:

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

正如其他人所建议的那样,它有两个简单的步骤:-

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

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

详情请参阅:- Https://better-coding.com/solved-eclipse-mat-java-heap-space-error/

根据我的经验,最大限度地增加 内存分析器,Xms 和 Xmx 作为你的材料的可能性。G1GC 更快,而且-XX:-UseGCOverhead 限制是必需的,因为 gc 的使用量可能很高,而且很耗时,也许-XX: + UseStringDeduication 是消耗更少内存的关键

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