我正在将Spring 3.1.2批处理应用程序迁移jdk1.7.0_25
到jdk1.7.0_40
x64和Oracle.
使用Sun OperatingSystemMXBean.getProcessCpuTime()
作为性能指标,结果显示性能下降2.5倍(即,我在u25上运行的应用程序要快得多).
java.util.HashMap
和java.util.ArrayList
更改,因为当使用u25的HashMap和ArrayList类引导u40时结果是相同的,并且这些更改对于这种差异来说太小了.-Xbatch
并-Xcomp
产生相同的结果(假设这些JDK之间的服务器编译是相同的).java.lang.invoke.MethodHandles
但似乎无关.除非Spring 3.1.2使用它们 - 我找不到它的证据.javac
编译似乎也没有改变.一些一般性说明:
jdk1.8.0
)都会出现此问题,而版本<u40似乎很好(包括各种版本的JDK 6).+UseSerialGC
用于测试).jdk1.7.0_40
.任何提示或想法?
编辑添加:应用程序的结构是一个外部循环,运行金融蒙特卡罗模拟:即大量的日期,计算等.因此,它目前有点复杂,我同意,不适合找到问题.我将不得不尝试将其缩小.