下面的代码明确地说明了问题,即:
繁忙的旋转暂停后,完全相同的代码块变慢.
请注意,我当然不会使用Thread.sleep.另请注意,没有条件导致HotSpot/JIT去优化,因为我正在使用数学运算更改暂停,而不是IF.
正如您在下面所看到的,差异很大,特别是在暂停变化后的第一次测量中.这是为什么!?
$ java -server -cp . JvmPauseLatency
Sat Apr 29 10:34:28 EDT 2017 => Please wait 75 seconds for the results...
Sat Apr 29 10:35:43 EDT 2017 => Calculation: 4.0042328611017236E11
Results:
215
214
215
214
215
214
217
215
216
214
216
213
215
214
215
2343 <----- FIRST MEASUREMENT AFTER PAUSE CHANGE
795
727
942
778
765
856
762
801
708
692
765 …Run Code Online (Sandbox Code Playgroud)