Arrays.fill auf G1GC 265-mal langsamer: Die Jagd nach einer einzigen Maschineninstruktion

Why is Arrays.fill 265 times slower on G1GC?

Ein Benchmark zeigt: Arrays.fill ist mit G1GC 265-mal langsamer als mit ParallelGC, obwohl keine Allokationen oder GC-Zyklen stattfinden. Der Autor jagt die Ursache bis zu einer einzelnen Maschineninstruktion und entdeckt, dass die Instruktion nur die halbe Antwort ist. Mit Assembly-Level-Profiling und detaillierten Code-Analysen wird erklärt, warum die G1-Write-Barrier so viel teurer ist und welche JVM-Flags helfen können.

139 Millisekunden gegenüber 0,5 Millisekunden – derselbe Java-Code, dasselbe JDK, dieselbe Maschine. G1 ist 265-mal langsamer.

Mehr von diesem Tag

2026-09-04