在我们将Java 6(u39)迁移到Java 8(u51)的过程中,我们发现Java 8的热身时间比6更长。我们发现这个问题不仅出现在用Java程序运行的性能测试中,还出现在启动带有Java 8的Tomcat 7(u35)时的初始请求中。我们正在运行Linux Redhat 64位系统。对于性能测试程序,我们发现在10次迭代后,Java 6的稳态性能接近215毫秒,而Java 8则需要800毫秒,并且需要70多次迭代才能达到215毫秒。当我们以并发度10在tomcat webapp上运行JMeter测试(使用Spring 2.5、jackson、xerces XML解析器、jedis等)时,在重新启动Java 6之后,它只需要不到一分钟就可以提供稳态性能,而Java 8则需要大约5-6分钟,并且直到那时速度才会变得慢数个数量级。在Java 8中使用“-XX:-TieredCompilation” VM HotSpot选项关闭分层编译可以解决性能测试程序的热身问题,并且稳态性能没有变化,这很奇怪,因为分层编译实际上应该让热身更快。但是关闭分层编译并没有给Tomcat服务器的热身时间带来类似的改进。我欢迎任何建议来解决这个问题,因为在生产环境中部署新版本可能会变得很麻烦,因为热身时间太长了。谢谢,Suresh