几个月前,我将整个设置从Java 1.5迁移到1.6(J2EE,Tomcat)之后,我才意识到Maven仍然被配置为通过Sun的javac参数“-target 1.5”生成目标为1.5的类文件。将“-target 1.5”更改为“-target 1.6”时,我能期待任何性能提升吗?使用在1.6 VM上运行的“-target 1.5”生成的Java类文件对性能的影响?
2
A
回答
5
它应该没有太大的区别。 1.6文件可以具有提高字节码验证速度的堆栈映射/表结构(Apache Harmony只使用更智能的算法)。
如果你去到1.4类常量的初始加载会稍微慢一些,但是这无关紧要给出一类需要多长时间负载(ldc
字节码的一种新的形式取代Class.forName
,但储存的结果在一个静态的领域)。
一般来说没关系。运行时编译器是非常重要的一点,它可以生成相同的机器代码。过去,为了减少运行时编译器的代码,javac减少了优化次数,但独立于-target
标志。
1
我不明白为什么会有性能差异。 1.5和1.6的班级格式没有太大的区别。如果没有其他更改,则指定目标将更改生成的类中的类别标识。
5
Java 1.6使用different class-file-format,这简化了字节码验证的过程。因此,如果您使用新的类文件格式,启动时间应该会有所提高。
+0
链接不再可用 – 2012-10-11 13:05:54
我想我会改变它的下一次更新。不应该伤害,但感觉更加一致... – Kjeld 2009-07-08 09:41:57