Eclipse Memory Analyzer,但始终显示发生内部错误?

Gav*_*vin 59 java eclipse memory

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)
Run Code Online (Sandbox Code Playgroud)

但是当我通过Eclipse Memory Analyzer打开head dump java_pid2584.hprof时,总会有消息:

An internal error occurred during: 
"Parsing heap dump from **\java_pid6564.hprof'".Java heap space
Run Code Online (Sandbox Code Playgroud)

cod*_*see 92

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

您可以按如下方式解决问题:

  1. 打开MemoryAnalyzer.ini文件

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

  • 在 mac 中,MemoryAnalyzer.ini 文件位于 /Applications/mat.app/Contents/Eclipse 文件夹中。 (5认同)
  • 它位于默认的dir中.但如果你使用的是eclipse插件,你必须放大eclipse配置的Xmx1024m (4认同)
  • 感谢您的回复,但我找不到 MemoryAnalyzer.ini 文件,位置在哪里? (2认同)

小智 24

请注意,在OS X上,要增加分配给MAT的内存,您需要右键单击Memory Analyzer.app并显示包内容.MemoryAnalyzer.ini文件位于/ Contents/MacOS /下.


Rus*_*hen 11

在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
Run Code Online (Sandbox Code Playgroud)


Abh*_*arg 10

针对MAC OS X El Capitan中Eclipse中的Memory Analyzer插件的相同问题的解决方案.

我面临同样的问题,但使用eclipse插件,我在Applications Folder中没有任何Memory Analyzer应用程序.对我有用的解决方案是:

  1. 右键单击Eclipse图标,然后选择Show Package Content.
  2. 转到目录> Eclipse
  3. 打开Eclipse.ini
  4. 将值-Xmx1024m更改为-Xmx2048m
  5. 重启Eclipse


Mr_*_*que 7

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

-vmargs
-Xms8g
-Xmx8g
-XX:-UseGCOverheadLimit
-XX:+UseG1GC
-XX:+UseStringDeduplication
Run Code Online (Sandbox Code Playgroud)


小智 5

如果从Eclipse使用Memory Analyzer,则编辑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

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

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