2

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

4

3 回答 3

5

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

如果您要转到 1.4,则类常量的初始加载会稍微慢一些,但这与加载类需要多长时间无关(一种新形式的ldc字节码替换Class.forName,但结果存储在静态字段中。)

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

于 2009-07-08T09:12:49.600 回答
5

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

于 2009-07-08T09:17:15.893 回答
1

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

于 2009-07-08T09:09:08.063 回答