使用 jvm.dll 和 java.exe 作为运行Eclipse的JVM有什么区别?
声明
我已将此问题与答案一起发布,因为我发现这些信息很有用,并希望与其他人分享。
答案 0 :(得分:5)
好的,只是为了解决一个混乱:在Windows上全新安装Eclipse没有在 eclipse.ini 文件中指定的 -vm 配置。
让我们看一下官方的 Equinox Launcher documentation在没有指定-vm的情况下所说的内容(强调我的):
如果未指定-vm,则启动程序首先在eclipse的根目录中的JRE目录中查找虚拟机,然后在搜索路径上查找。如果 在任一位置找到Java,然后我们在Window上查找JVM 共享库 ( jvm.dll , libjvm.so < / em> on * nix平台)相对于Java可执行文件。
- 如果找到JVM 共享库 ,我们加载它并使用JNI调用API启动vm
- 如果找不到JVM共享库,我们执行Java启动程序以在新进程中启动vm
正如您所看到的, jvm.dll 是首先搜索的那个,并且只有在找不到它时,那么Java启动器(即java.exe或使用javaw.exe。
使用 jvm.dll 时,Eclipse使用JNI调用API
在当前流程中启动vm 。您将在任务管理器中只看到一个进程:
的eclipse.exe
使用 javaw.exe (或 java.exe )时Eclipse执行该Java
启动器在新进程中启动vm 。您将在任务管理器中看到两个进程:
1) eclipse.exe
2) javaw.exe (如果配置了 java.exe )
javaw.exe 将是 eclipse.exe 进程的子进程(子进程)。
< / LI>所以选择取决于你。阅读以下文章,该文章很好地解释并说明了使用 jvm.dll 或 javaw.exe 的可能后果:Eclipse.exe and windows processes
最常用的选项之一是指定要运行的Eclipse的特定JVM 。这样做可确保您绝对确定将运行哪个JVM Eclipse,并使您免受可能更改系统“默认”JVM的系统更改的影响。在此处阅读更多内容:Specifying the JVM