java - 带有 JRE 7 的 Eclipse Juno 会导致启动问题

标签 java eclipse jvm jvm-arguments javaw

所解释的问题似乎是一个常见问题,并且已经提出了不同的解决方案,其中许多解决方案都有效。 One example of this discussion can be found here .

我的问题更多的是关于为什么而不是如何

我们自己也一直在努力解决这个问题,发现如果我们使用 javaw.exe 启动 Eclipse,就会出现问题,但如果我们使用 jvm.dll 调用 Eclipse,则不会出现问题。即使在这两种情况下,eclipse.ini 保持不变。

为了解释我的情况,我将使用使用单个 -vm 参数从命令行启动 eclipse.exe 的示例。下面是我们正在使用的 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

可以看到,无论是堆(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

最佳答案

我无法解释为什么将 Eclipse 指向可执行文件会失败,但 dll 却不会,但我可以提供 this来解释问题。其要点是,在 Windows 上,JVM 需要为堆分配连续的内存块,如果不能,则启动失败。

也许this page将有助于弄清楚为什么指向 dll 似乎有效。否则,我会询问 Eclipse Equinox forum .

关于java - 带有 JRE 7 的 Eclipse Juno 会导致启动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646140/

相关文章:

java - AtomicInteger 实现和代码重复

java - 带有AspectJ的库:切入点捕获使用它的应用程序中的行为

C++:动态共享库中的虚函数产生段错误

python - Eclipse 错误 "warning"没有消失

eclipse - 我在 Eclipse 上安装哪个 gradle 插件?

Java应用程序使用系统中的最大可用内存

java - Java和Linux操作系统随机挂起24分钟(Linux,arm,Debian,Java 7 ARM)

java - 使用正则表达式一次性替换主题标签

java - 为什么 OpenEntityManagerInViewFilter 不执行脏检查?

java - 如何在 servlet-jsp/jsp-servlet 中过滤 arraylist 结果?