2011-05-26 108 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