Java Eclipse内存分析器,但始终显示发生了内部错误?
但当我通过Eclipse内存分析器打开head dump java_pid2584.hprof时,总会有这样一条消息:Java Eclipse内存分析器,但始终显示发生了内部错误?,java,eclipse,memory,Java,Eclipse,Memory,但当我通过Eclipse内存分析器打开head dump java_pid2584.hprof时,总会有这样一条消息: 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.OutOfMemoryErro
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内存分析器将转储文件放入内存—我怀疑您的Eclipse的内存少于应用程序的限制
您也可以反其道而行之,增加Eclipse的内存限制,但如果您的应用程序在服务器上运行,则很难匹配内存大小。问题在于Eclipse内存分析器没有足够的堆空间来打开堆转储文件 您可以按如下方式解决此问题:
MemoryAnalyzer.ini
文件-Xmx1024m
更改为更大的尺寸发生内部错误。Java堆空间 回答:去你的项目工作区 打开。设置文件夹 删除.setting文件夹的所有文件。 在编译之后 现在没有像堆空间这样的错误
享受:)我在这里也尝试了所有的解决方案,但仍然得到相同的错误以及eclipse由于错误或未知的文件类型/编辑器关联而试图将.hprof文件作为文本文件打开的原因 解决方案:右键单击该文件,选择OpenWith,然后选择Others,然后选择Eclipse内存分析器
使用700MB转储,在大约600M的eclipse堆上使用2G转储。注意,在OS X上,要增加分配给MAT的内存,需要右键单击
MAT.app
并显示包内容。MemoryAnalyzer.ini
文件位于/Contents/Eclipse
下。如果从Eclipse使用内存分析器,则编辑Eclipse.ini文件以将vm参数增加到-Xmx1024m或更高。这对我有用。
在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
文件复制到新位置
要查找MemoryanAnalyzer查找ini文件的位置,可以运行:
An internal error occurred during:
"Parsing heap dump from **\java_pid6564.hprof'".Java heap space
针对MAC OS X El Capitan中Eclipse中内存分析器插件的相同问题的解决方案 我也面临同样的问题,但使用eclipse插件时,我在Applications文件夹中没有任何内存分析器应用程序。对我有效的解决方案是:
如果您正在使用Mac,请尝试在mat.app“folder”中使用-data选项运行可执行文件,通过该选项可以指定可写路径:
sudo su
cd ...MemoryAnalyzer.app/Contents/MacOS/
dtruss ./MemoryAnalyzer 2>&1 | grep ini
cd mat.app/Contents/MacOS
/内存分析器-数据
正如其他人所建议的,其两步简单流程:-
根据我的经验,添加MemoryAnalyzer.ini,将Xms和Xmx最大化为您的装备可能性。G1GC速度更快,需要-XX:-UsegCoveredLimit,因为gc使用率可能会很高且很耗时,而-XX:+UseStringDuplication可能是消耗更少内存的关键
cd mat.app/Contents/MacOS
./MemoryAnalyzer -data <writable_path>
在启动Eclipse时,您是否尝试增加
-Xmx
参数?如果您在指定-Xmx时“没有足够的RAM”,那么会有一些想法当我分析内存错误的努力失败时,我笑得很厉害,因为工具没有足够的内存。Hillary.MAT的内存中没有完整的.hprof
!我有3GB大的内存转储,我可以在我的1G Eclipse实例中进行分析…真的吗?但是当我打开200M.hprof文件时,总是出现错误。我的解决方法与Codeisee完全相同。MAT在分析大文件时总是有问题。请看:。“嗯,分析大堆转储也可能需要更多堆空间。给它一些内存”谢谢你的回答,但我找不到MemoryAnalyzer.ini文件,位置在哪里?它位于默认目录中。但是如果你使用eclipse插件,您必须放大eclipse配置的Xmx1024m,但当我使用eclipse.exe-vmargs-Xverify:none-XX:+UseParallelGC-XX:PermSize=100M-Xms256M-Xmx600M-Duser.language=en放大内存时,问题仍然存在。我发现,当小于100M时,它可以解析.hprof文件,但当大于100m时,此方法不适用于最新版本的OS X(El Cap)和MemoryAnalzyer(1.5.0),请参阅下面的答案以了解解决方法。您可以显式grep forMemoryAnalyzer.ini
,因为还有一些其他的ini
文件会出现并使您困惑。如果它不起作用,尝试/MemoryAnalyzer-vmargs-Xmx5g-XX:-在mat.app/Contents/MacOS/
中使用gcoverheadlimit
是的,如果在eclipse中安装了mat插件,则需要根据转储文件在-Xmx下增加eclipse.ini中的内存。
-vmargs
-Xms8g
-Xmx8g
-XX:-UseGCOverheadLimit
-XX:+UseG1GC
-XX:+UseStringDeduplication