在1.6 VM上运行"-target 1.5"生成的Java类文件的性能影响?

Kje*_*eld 2 java performance cross-compiling

在几个月前将我的整个设置从Java 1.5迁移到1.6(J2EE,Tomcat)之后,我才意识到Maven仍然配置为通过Sun的javac参数"-target 1.5"生成针对1.5的类文件.将"-target 1.5"更改为"-target 1.6"时,我可以期待任何性能提升吗?

Tom*_*ine 5

它不应该有太大的区别.1.6文件可以有堆栈映射/表结构,可以提高字节码验证速度(Apache Harmony只使用更智能的算法).

如果你要去1.4,那么类常量的初始加载会稍微慢一些,但考虑到一个类加载多长时间(这是一种新形式的ldc字节码替换Class.forName,但结果存储在一个静态字段中)这是无关紧要的.

一般来说没关系.运行时编译器是重要的一点,可以生成相同的机器代码.在过去,已经对javac进行了减少优化,以便不破坏运行时编译器的代码,但这与-target标志无关.


Mne*_*nth 5

Java 1.6使用不同的类文件格式,这简化了字节码验证的过程.因此,如果使用新的类文件格式,启动时间应该会有所改善.