首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 6的性能改进是在JDK、JVM,还是两者都有?

Java 6的性能改进是在JDK、JVM,还是两者都有?
EN

Stack Overflow用户
提问于 2008-09-18 14:30:02
回答 4查看 6.5K关注 0票数 3

我一直在想Java SE 6中吹捧的性能改进-是在编译器还是在运行时?换句话说,用JDK 6编译的Java 5应用程序在JSE 5下运行会有改进吗(这表明编译器优化得到了改进)?用JDK 5编译的Java 5应用程序在JSE 6下运行会有改进吗(表示改进了的运行时优化)?

我注意到,对于完全相同的代码库,在JDK 6下编译花费的时间几乎是在JDK 5下的两倍;我希望至少有一些额外的时间花在编译器优化上,希望能带来更高性能的JAR和WAR。Sun的JDK信息并没有详细介绍他们所做的性能改进--我假设它来自A专栏,也来自B专栏,但我想知道哪个影响更大。有没有人知道在JDK 6和JDK 5上做的基准测试?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-09-18 14:38:26

我没有听说过编译器的改进,但已经发布了大量关于运行时性能改进的信息。

迁移指南:

http://java.sun.com/javase/6/webnotes/adoption/adoptionguide.html

性能白皮书:

https://www.oracle.com/java/technologies/javase/6performance.html

票数 3
EN

Stack Overflow用户

发布于 2008-09-18 14:40:49

javac从Java源代码编译为字节码,几乎不做任何优化。事实上,优化通常会使代码运行速度变慢,因为更难分析以进行后续优化。

1.5和1.6生成的代码之间唯一的显著区别是,在Java1.6中添加了关于堆栈状态的额外信息,以使验证更容易、更快( -target ME也可以做到这一点)。这只会影响类的加载速度。

真正优化的部分是hotspot编译器,它将字节码编译成本机代码。这甚至在一些更新版本中进行了更新。在Windows上,默认情况下,只有较慢的客户端C1版本的hotspot才会在JRE中分发。服务器C2 hotspot运行得更快(在java命令行上使用-server ),但启动较慢且占用更多内存。

此外,库和工具(包括javac)有时也会完成优化工作。

我不知道为什么你发现JDK 6编译代码比JDK 5慢。在设置上有什么细微的区别吗?

票数 7
EN

Stack Overflow用户

发布于 2008-09-18 14:34:13

它几乎是100%的运行时。虽然可以将一些基本的编译技巧添加到Java编译器本身中,但我不认为Java1.5和1.6之间有任何重大改进。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/93049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档