我从Java 1.5整个设置迁移至1.6(J2EE,Tomcat)的几个月前,我刚刚意识到的Maven仍然配置为产生通过Sun的javac参数针对1.5类文件“-target 1.5”。 我可以期待任何的性能提升改变“-target 1.5”到“-target 1.6”的时候?
Answer 1:
它不应该太大的差别。 1.6文件可以具有改善字节码验证速度(Apache的和谐只是使用一个聪明的算法)栈图/表结构。
如果你去到1.4类常量的初始加载会稍微慢一些,但考虑到一类需要多长时间来加载是不相关的(的一种新形式ldc
的字节码取代Class.forName
,但结果却是存储在静态字段)。
一般来说不要紧。 运行时编译器是最重要的一点,并且几乎可以产生相同的机器代码。 在过去,已经作出的javac减少它这样做不为裂伤运行时编译器的代码优化,但独立于的-target
标志。
Answer 2:
Java 1.6的使用不同类的文件格式 ,简化了字节码验证的过程。 因此,启动倍应该提高一点,如果你使用新的类文件格式。
Answer 3:
我不明白为什么会是一个性能上的差异。 有1.5和1.6类格式之间进行无重大差异。 如果没有其他变化,指定目标将改变classversion ID在生成的类。
文章来源: Performance impact of Java class files generated with “-target 1.5” running on a 1.6 VM?