2010-09-22 123 views
3

我在分析一个〜800mb的堆转储,这需要比我的eclipse标准更大的堆。但是,当我转到eclipse.ini文件并设置-Xmx2g(或-Xmx2048m)时,出现“创建Java虚拟机失败”错误。Eclipse内存分配问题

1)是的,我有足够的内存。 2)我可以将其更改为-Xmx976m。 3)我试过了独立的MAT分析器,它与-Xmx1024m一起使用,而不是更多的字节。 4)不,1GB不够来分析堆,我得到一个OOM

这是Eclipse错误: 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。

+0

PS:''-vmargs -Xmx1g''在命令行中不会工作。 – filippo 2010-09-22 13:48:19

+0

您是否尝试过通过命令行将堆内存分配给JVM?你能分配多少钱? (java -Xmx ) – 2010-09-22 18:02:59

+0

嗯..有趣..我创建了一个虚拟的应用程序来测试jvm参数,我发现的是JVM不会在Windows中实际交换。我会发布一个答案。 – filippo 2010-09-23 09:06:19

回答

0

我已经创建了一个虚拟应用程序来测试jvm参数,而我发现的是JVM似乎不能在Windows中交换,至少不会形成启动。 我有4g的RAM,但它只允许我分配剩余的空闲空间。奇怪的是,它对不同appps的工作方式不同:我的假应用程序允许我上升到Xmx1380m,而日食只上升到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 - > performance - > Physycal Memory;并将您的Xmx设置为与“可用”中显示的值相同的值。

如果有人能说出如何阻止JVM在启动之前检查是否真的有足够的可用内存,那将会很酷。我使用的是1.5G的工作,因为我只处理了800MB的堆转储,但如果是大一点我没有跑哪里去了......

欢呼声,

˚F 。

+0

在日食论坛的拉斯维加斯提供了一个提示:http://www.eclipse.org/forums/index.php?t=msg&goto=628790&S=d56504573b2973729d9442f637c10dd9#msg_628790 – filippo 2010-09-24 07:44:34

5

你看到的这个问题在我假设的窗口上?

我有同样的问题。读完你的问题后,我再次挖掘。我刚刚找到了解决我的问题。如果它是相同的尝试。 在您的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生活光碟。启动到Linux,然后我能够在MAT中分配2g而没有问题。 (确保你获得Linux的MAT)

不是最好的解决方法,但我永远不会在MAT论坛上发现任何指示错误的东西。

+0

嗨,哥们,我已经试过了,但是虽然jvm开始了,但它并没有拿起内存设置。你确定它适合你吗?检查帮助 - >关于 - >安装细节 - >配置。它会告诉你实际的配置。没有破折号我的堆仍然是64mb :( – filippo 2010-09-23 09:10:23

+0

是的,它绝对有效。能够打开我以前不能使用的文件,并确认与VisualVM的内存占用。PS这是独立MAT我使用 – Sean 2010-09-23 11:51:21

+0

哦..这很奇怪。最新版本在右下角有一个条形图,带有内存状态,鼠标悬停在它上面告诉细节(最小,最大,标记),我也确认有...这可能不是一个错误,但他们肯定可以使内存confs。更清晰:( – filippo 2010-09-23 15:35:08

2

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

1

您是否修改了Java控制面板中的Java运行时环境设置?通过在运行时参数的列中添加运行时参数(例如-Xmx3072m)。

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

Increase JVM in Windows 7

希望它的帮助来解决你的问题..