G1GC에서 Arrays.fill이 265배 느린 이유

Why is Arrays.fill 265 times slower on G1GC?

같은 JDK, 같은 머신에서 G1GC와 ParallelGC의 Arrays.fill 성능을 비교한 결과, G1GC가 265배 느렸습니다. GC 사이클도 없고 할당도 없는데 말이죠. 이 글은 그 차이를 단일 머신 명령어까지 추적하고, 그 명령어가 답의 절반에 불과하다는 것을 밝혀냅니다. ARM64 어셈블리 분석을 통해 G1GC의 쓰기 배리어가 얼마나 많은 작업을 수행하는지, 그리고 왜 이 벤치마크에서 세 개의 조기 종료 조건이 모두 실패하는지 설명합니다. JVM 튜닝 플래그 사용에 대한 경고와 함께, 프로덕션에서 고려할 만한 유일한 플래그에 대해서도 마지막에 다룹니다.

같은 Java 코드, 같은 JDK, 같은 머신인데 G1은 265배 느립니다.

이 날의 다른 글

2026-09-04