HotSpot warm-up은 각 측정에 포함되는 작업을 계속 바꾼다

첫 nanoTime에는 class load·initialization·profiling·JIT compile이 섞이고 이후에도 GC와 scheduler가 변동을 만듭니다.

  1. 1

    cold invocation

    load·initialize

  2. 2

    interpreter

    execution profile 수집

  3. 3

    tiered compile

    hot method compile 가능

  4. 4

    warmed samples

    여러 iteration 분포

  5. 5

    new fork

    이전 profile 격리

핵심: 예열·여러 measurement·독립 fork를 사용해 application operation과 JVM 준비 비용을 구분합니다.