所解释的问题似乎是一个常见问题,并且已经提出了不同的解决方案,其中许多都有效。可以在此处找到此讨论的一个示例。
我的问题更多是关于为什么而不是如何。
我们自己也一直在努力解决这个问题,发现如果我们使用 javaw.exe 启动 eclipse 会出现问题,但如果我们使用 jvm.dll 调用 Eclipse 则不会出现问题。尽管在这两种情况下都eclipse.ini
保持不变。
为了解释我的情况,我将使用eclipse.exe
从带有单个-vm
参数的命令行启动的示例。以下是eclipse.ini
我们正在使用的供参考:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
--launcher.XXMaxPermSize
256m
-vmargs
-Xms128m
-Xmx1280m
-XX:MaxPermSize=512m
-Dderby.stream.error.field=java.lang.System.err
您可以看到,heap (1280m) 和 PermGen (512m) 请求分配的内存都相当多。如果您无法重现该问题,您可以尝试增加内存,直到出现错误。
您可以使用三种不同的命令行:
eclipse.exe -vm ..\jre\bin\javaw.exe
eclipse.exe -vm ..\jre\bin
eclipse.exe -vm ..\jre\bin\client\jvm.dll
只有第一个导致错误(javaw.exe)。其余两个选项成功启动 eclipse。减少 eclipse.ini 中的内存需求也明显解决了这个问题。
所以我的问题是,当其他两个命令行工作时,为什么 javaw.exe 会失败?选择这些不同的路径有什么区别?一个人是否比其他人更严格地执行参数?
环境:Eclipse:3.8-win32,JRE:7u7-win32,Windows 7 x64