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

时间:2009-07-08 09:04:57

标签: 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”时,我可以期待任何性能提升吗?

3 个答案:

答案 0 :(得分:5)

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

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

一般情况下并不重要。运行时编译器是重要的一点,可以生成相同的机器代码。在过去,已经对javac进行了减少优化,以便不破坏运行时编译器的代码,但这与Class.forName标志无关。

答案 1 :(得分:5)

Java 1.6使用different class-file-format,简化了字节码验证的过程。因此,如果使用新的类文件格式,启动时间应该会有所改善。

答案 2 :(得分:1)

我不明白为什么会有性能差异。 1.5和1.6的类格式之间没有重大差异。如果没有其他更改,则指定目标将更改生成的类中的classversion id。