为什么Eclipse会因为Xmx,XX:MaxPermSize高于某些值而崩溃?

时间:2009-11-26 17:33:02

标签: java eclipse jvm

在WinXP SP3 32Bit上运行Eclipse 3.5.1,JDK 1.6.0_17,内存为3.5 GB。
我知道已知的Eclipse best practices,仍在试图找出eclipse.ini。

这将启动:-Xmx588m,但不会:-Xmx589m-XX:MaxPermSize相同。高于-XX:MaxPermSize=140m的任何内容都无法启动 死亡屏幕与this相似(取自here)。

关于为什么会发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:4)

请参阅this eclipse bug

一般问题是jvm需要一个连续的内存块。在Windows上,该过程将获得2个Gigs,其他加载的库被放置在内存空间的不同区域。如果一个库恰好放在中间,基本上可以减少一半的尺寸。

Eclipse启动程序将加载一些系统dll来执行图形处理,特别是user32.dll可能会导致第三方库被加载,具体取决于计算机上安装的内容(见here)。

要获得更高的内存限制,可以强制将jvm分叉到与eclipse启动器分开的进程中。在vm初始化其内存之前,jvm进程不会加载这些额外的库。通过使用指向javaw.exe的-vm参数来执行此操作:

eclipse -vm C:\jdk\jre\bin\javaw.exe

答案 1 :(得分:1)

另请参阅this bug 203325,了解有关如何使用以下工具监控内存使用情况的建议:

  • JConsole的
  • 内存监视工具(eclipse工具)

注意:commented here

  

如果您没有声明最大内存限制,则将其留给操作系统内存管理器。

     

-Xmx <size>对于编写像J2ME这样的小型设备非常有用   如果您正在为受内存限制的小型设备进行编程,那么即使您可能正在使用PC,也可以使用-Xmx JVM属性来模拟小型设备。