我有一个用Java 6创建的Java解决方案,并且已经使用JDK 1.6.0_45在Eclipse中进行了编译。它是由外部BPMN调度框架定期在线程上执行的Runnable JAR。 JAR进行了一系列调用,如下所示:
使用以下Java Runtime Environment在Linux服务器上运行构建:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
由于需要更新到Java 8,我已经使用Java-SE 1.8(JDK 1.8.0_121)重新编译了该解决方案。我还设置了一个带有以下JRE的linux服务器:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
我看到的是JAR性能的显着下降,其中REST调用执行起来的时间至少是Java 6的4倍,以及其他任何操作,例如在Java中读取excel文件。使用'top'我可以看到内存使用情况与Java 6大致相同,只是整体执行时间增加了。
有人知道为什么会这样,Java 8是否存在任何已知问题?