为什么 Eclipse 会因 Xmx、XX:MaxPermSize 高于特定值而崩溃?
题
在具有 3.5 GB RAM 的 WinXP SP3 32 位上运行 Eclipse 3.5.1、JDK 1.6.0_17。
我知道已知的 Eclipse 最佳实践, ,仍在尝试找出 eclipse.ini。
这将启动: -Xmx588m
这不会: -Xmx589m
.
与相同 -XX:MaxPermSize
. 。以上任何内容 -XX:MaxPermSize=140m
不会启动。
死亡画面类似于 这 (取自 这里).
关于为什么会发生这种情况有什么想法吗?
解决方案
请参阅此日食错误。
一般问题是jvm需要一个连续的内存块。在Windows上,该过程将获得2个Gigs,其他加载的库被放置在内存空间的不同区域。如果一个库恰好放在中间,基本上可以减少一半的尺寸。
Eclipse启动程序将加载一些系统dll来执行图形处理,特别是user32.dll可能会导致第三方库被加载,具体取决于您的计算机上安装的内容(见这里)。
要获得更高的内存限制,可以强制将jvm分叉到与eclipse启动器不同的进程中。在vm初始化其内存之前,jvm进程不会加载这些额外的库。通过使用指向javaw.exe的-vm参数来执行此操作:
eclipse -vm C:\jdk\jre\bin\javaw.exe
其他提示
也可以看看 这个错误 203325 有关如何使用以下工具监控内存使用情况的建议:
- 控制台
- 内存监控工具(eclipse工具)
笔记:作为 在这里发表评论:
如果您没有声明最大内存限制,则将其留给操作系统内存管理器。
这
-Xmx <size>
对于像 J2ME 这样的小型设备进行编程非常有用。
如果您正在为内存受限的小型设备进行编程,那么您可以使用-Xmx
即使您可能使用的是 PC,也可以使用 JVM 属性来模拟小型设备。
不隶属于 StackOverflow