STS / Eclipse JVM最大堆低于机器上的可用内存

时间:2011-06-01 15:49:56

标签: eclipse jvm

我正试图在eclipse / STS中增加我的最大堆。我发现天花板似乎远低于我的自由记忆。 Windows在任务管理器中报告2G可用内存。似乎Eclipse中的JVM只能分配大约1.2G。在eclipse.ini中的下面的配置中,如果我将-Xmx更改为1200m以上,我会收到JVM无法启动的错误。为什么它不允许我分配更多?

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
com.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vm
C:/bea/jdk160_05/bin/javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Xms1200m
-Xmx1200m

1 个答案:

答案 0 :(得分:2)

这通常是32位系统的Windows 2Gb / DLL进程限制。 Java通常(因此Eclipse)为其堆分配一个连续的内存块。 Windows仅允许32位系统上的进程最大(通常)2Gb。 (有一些技巧可以将其提升到3Gb。)令人讨厌的问题是,Windows DLL很可能被映射到内存中占用2Gb的位置 - 尽管它们可以通过一种称为变基的技术来移动。在典型的Windows 32位系统上,根据安装的内容,您可以在连续的块中获得1.2Gb和1.4Gb,因此,这是您作为Java堆获得的最多。

唯一真正提高这一点的方法是切换到64位系统。有一些技术可以移动DLL并切换到3Gb,以达到可以适度改进的过程限制。有关更多信息,请参阅http://msdn.microsoft.com/en-us/windows/hardware/gg487508