是否存在任何已知的运行时性能问题使用Java 7编译为Java 6字节码

时间:2014-10-04 00:19:24

标签: java performance java-7 bytecode

将我们的应用程序迁移到Java 7.我们看到运行时性能问题用Java 7编译Java 6字节码。这是预期的吗?这样做的缺点/好处是什么?

我们有一个具有SOAP接口的Web应用程序。在我们的回归测试中,我们在其中搜索SOAP消息并获取SOAP消息。我们使用Groovy来帮助管理这个测试。

更明确一点,我们正在编译

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>

使用Java 7 SDK。这不编译java 6字节代码吗? (使用Java 7)

我正在寻找的一些事例

Given that HashMaps in jdk1.6 and above cause problems with multi=threading, how should I fix my code

https://www.servoy.com/forum/viewtopic.php?f=6&t=19140

对于我们的测试服务,我们模拟用户点击我们的网络服务。在我们的测试中将线程数减少到8而不是20,这大大降低了整体运行时间。这是基于上面的HashMap文章。任何人都可以看到多线程会降低性能的另一个原因吗?在java 6中,我们运行了20个线程,速度更快。

1 个答案:

答案 0 :(得分:1)

  

我们看到运行时性能问题用Java 7编译Java 6字节码。这是预期的吗?

没有。这不是预期的。这是可能的......但我不会预测它,我无法想到一个明显的解释。

  

这样做的缺点/好处是什么?

我认为使用Java 7工具编译代码并设置为&#34; -target&#34;对您的问题(迁移)没有实际好处。到&#34; 1.6&#34;。我会直接编译Java 7平台。

当然,试图找出代码显然运行得慢的原因并没有任何好处。这可能是真实的效果,也可能是幻觉;例如您正在进行基准/性能测量的方式的人工制品。但不管怎样,如果您编译Java 7并在Java 7上运行,那么它并没有告诉您将会发生什么......这就是您要去的地方。


通常,您不希望在较新版本的Java中性能变慢。但是,有些因素可能会导致性能特征发生变化。例如:

  • JIT编译器中的更改可能会导致某些非典型应用程序运行速度变慢。

  • JIT编译策略的变化可能导致代码在以后编译JIT ......这可能会影响启动/预热期间的性能。 (基准测试应该旨在弥补这一点......)

  • 堆组织/垃圾回收算法的更改可能需要调整/重新调整。

等等。