相关疑难解决方法(0)

为什么JVM在繁忙的旋转暂停后对同一代码块显示更多延迟?

下面的代码明确地说明了问题,即:

繁忙的旋转暂停后,完全相同的代码块变慢.

请注意,我当然不会使用Thread.sleep.另请注意,没有条件导致HotSpot/JIT去优化,因为我正在使用数学运算更改暂停,而不是IF.

  • 我想要一个数学运算块.
  • 首先,我在开始测量之前将块暂停1纳秒.我这样做了20,000次.
  • 然后我将暂停从1纳秒更改为5秒,然后像往常一样继续测量延迟.我这样做了15次.
  • 然后我打印最后30次测量,这样你可以看到15次测量,暂停1纳秒,15次测量,暂停5秒.

正如您在下面所看到的,差异很大,特别是在暂停变化后的第一次测量中.这是为什么!?

$ 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)

java optimization jvm real-time low-latency

9
推荐指数
1
解决办法
518
查看次数

标签 统计

java ×1

jvm ×1

low-latency ×1

optimization ×1

real-time ×1