Eclipse内存分配问题

时间:2010-09-22 13:46:43

标签: eclipse memory jvm heap-dump

我正在尝试分析一个~800mb的堆转储,这需要比我的eclipse标准更大的堆。但是,当我转到eclipse.ini文件并设置-Xmx2g(或-Xmx2048m)时,我收到错误“无法创建Java虚拟机”。

1)是的,我有足够的记忆力。 2)我可以将它改为-Xmx976m。 3)我尝试过独立的MAT分析器,它与-Xmx1024m配合使用,而不是一个字节。 4)不,1gb不足以分析该堆,我得到一个OOM

这是日食错误: alt text

这是MAT错误: alt text

(我认为它们是相同的,这只是你可以看到一个MAT的例子)

我当前的eclipse.ini(工作)是:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m

有人想出来了吗?

谢谢!

F。

4 个答案:

答案 0 :(得分:5)

你看到的这个问题出现在我认为的Windows上吗?

我有同样的问题。看完你的问题后,我再次出去挖掘。我刚刚找到了解决问题的方法。如果是相同的尝试。 在Eclipse或MemoryAnalyzer ini文件中,从Xmx选项中删除 - 。然后我的ini文件变成了

-vmargs
Xmx1536m

现在就像一个有更多记忆的魅力。 感谢Alex2308在此主题http://troyworks.com/blog/2008/06/08/eclipse-jvm-terminated-exit-code-1/comment-page-1/#comment-80

中的评论

我之前的解决方案是获取Linux Live光盘。启动到Linux然后我能够在没有问题的情况下在MAT中分配2g。 (确保你获得Linux的MAT)

不是最好的解决方法,但我在MAT论坛上找不到任何指示错误的内容。

答案 1 :(得分:2)

看起来你在32位虚拟机上。 Java VM尝试在单个块中保留其整个内存空间,这意味着根据系统DLL所在的位置,它可能无法获得那么多内存。切换到64位虚拟机(显然需要64位CPU和操作系统)应该可以解决这个问题。

答案 2 :(得分:1)

您是否在Java控制面板中修改了Java Runtime Environment设置?通过在运行时参数列中添加运行时参数,例如-Xmx3072m。

也许你可以在这里查看详细信息..

Increase JVM in Windows 7

希望它有助于解决您的问题..

答案 3 :(得分:0)

我已经创建了一个假应用来测试jvm params,我发现JVM似乎没有在windows中交换,至少不会形成启动。 我有4GB的ram,但它只允许我分配剩余的可用空间。奇怪的是它对于不同的appps有什么不同:我的假应用允许我上升到Xmx1380m,而eclipse只上升到Xmx1024m。

错误如下:

$ java -jar -Xmx1500m "C:\fakeapp.jar"
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

同样的事情,但-Xmx1380g和应用程序运行良好。

在unix中从来没有遇到过这个问题,即使它直接进行交换,堆也会以你说的大小开始。

对于在Windows上遇到此问题的任何人: 首先检查ctrl + shift + esc - >表现 - >生理记忆;并将Xmx设置为与“可用”中显示的值相同。

如果有人能说出如何阻止JVM在开始之前检查你是否真的有足够的可用内存,那将会很酷。我正在使用的1.5g工作,因为我正在处理一个只有800mb的堆转储,但是如果它稍微大一些我就没有在哪里运行......

欢呼声,

F。