2011-05-26 109 views
5

通过plain java命令启动应用程序与通过Linux中的libjvm.so或Windows中的jvm.dll直接调用JVM有什么区别?'java'和'libjvm.so'(Linux)或'jvm.dll'(Windows)之间的区别?

最近我在一个论坛上看到,使用dll或.so文件启动eclipse会给出更好的性能。我想知道这是怎么发生的。

谢谢。

+1

我不认为会有太多的性能差异。你能链接到论坛上的这种说法吗? – 2011-05-26 06:10:10

+0

@joachim 对不起,我不记得论坛帖子。我后来看到它,并且把它放在我的脑海里。 但是,这个StackOverflow条目还指出,使用jvm.dll时,启动画面会更快(请参阅第一个答案,注释部分)。它也说明了一系列优点。 [链接](http://stackoverflow.com/questions/316265/tricks-to-speed-up-eclipse)。 – 2011-05-26 06:20:10

回答

3

如果用户想要围绕Java核心打包自己的功能,那么有时候很难做到Java看起来“原生”的事情,但是人们通常会针对jvm.dll构建它们。一个很好的例子就是Eclipse,他们希望在启动之前弹出一个启动画面并执行一些其他操作。对于其他产品而言,Java只是他们工作负载的一小部分(例如:需要在某些时候桥接到Java的大型C++应用程序)。

从性能角度来看,这是无关紧要的。这完全取决于你想如何像Eclipse那样“适应并完成”。

3

link讨论Eclipse的启动;这很可能会更快,因为通过使用-vm参数指定JRE,Eclipse可执行文件不必搜索系统以找到适当的JRE来启动(这可能会导致磁盘I/O并可能涉及检测版本的JRE)。你没有加速Java,你正在加速native launcher

+1

我同意你关于JRE的检测。我使用-vm指向bin/java,而不是jvm.dll或libjvm.so,直到遇到我指出的链接。我的问题是关于这两者之间的区别。就像你说的,缺席-vm选项会变慢。但是我想知道的是使用-vm指向java可执行文件和jvm.dll的区别。谢谢 ! – 2011-05-28 04:35:32