2016-01-11 106 views
2

我有用java 1.6編譯的項目,但它在1.7 jvm的機器上運行,我想知道如果項目也會有性能改進用java 1.7編譯。在Java 1.6中編譯的應用程序的性能和1.7下運行jvm

+0

你可以參考這個博客瞭解1.6和1.7之間的性能:http://lingpipe-blog.com/2009/03/30/jdk-7-twice-as-fast-as-jdk- 6-for-arrays-and-arithmetic/ 而這個:http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/ –

回答

4

(注:我在這裏講了Oracle JDK和JVM)的

如果你的意思是隻需重新編譯源文件,而無需在Java 7中採取的任何新功能,我懷疑你會看到任何重大的性能變化。

性能優化完成:

  • 由編譯器優化字節碼,並
  • 由JVM,優化,因爲它運行,特別優化的「熱點」(JVM的故名,因爲它檢測到它們

因此,如果您不使用新的Java 7功能,那麼您將看到的唯一改進是如果Java 7編譯器執行了一些重要的新字節碼級優化, Java 6編譯器沒有這樣做。我沒有看到在release notes中列出的任何東西,甚至在Java 6中,編譯器也進行了很好的優化(坦率地說,我認爲絕大多數優化都發生在JVM上; JVM 7中的性能提高了,已經得到了好處)。

JVM不必對類文件格式的變化做任何重要的工作。根據Java SE 7 and JDK 7 Compatibility page,唯一的二進制兼容性更改是由於引入了新的字節碼而導致次版本號更改。但是,該字節碼(invokedynamic)支持不在Java 6源代碼中的功能,因此無法在此處看到。結構沒有改變,只是次要版本號。

相關問題