Language & Framework

객체 Churn(Object Churn)이란?

Jordy-torvalds 2025. 5. 17. 18:33

객체 Churn(Object Churn)이란?

객체 churn은 JVM 메모리 영역에서 객체가 빠르게 생성되고 빠르게 소멸하는 활동을 의미합니다. 쉽게 말해, 단명 객체(short-lived objects)가 빈번히 생성되고 가비지 컬렉션 대상이 되는 상황을 말합니다.

 

예시

for (int i = 0; i < 1000000; i++) {
    String s = new String("value");  // 매번 새 객체 생성
}

이런 패턴에서는 엄청난 수의 객체가 Young Generation에서 짧은 시간에 생성되고 사라지며, 이로 인해 GC가 자주 발생합니다.

객체 Churn이 높은 애플리케이션 예

  • REST API 서버에서 요청마다 새로운 DTO, Map, JSON 객체 생성
  • 고속 로그 수집 시스템
  • Kafka 메시지 처리, 실시간 스트림 처리
  • Web framework에서 request/response 객체 반복 생성

왜 중요할까?

  • 객체 churn이 높으면 Young GC가 자주 발생하므로, Young 수집 효율이 매우 중요합니다.
  • ZGC는 Java 17까지 세대 구분이 없어, 모든 객체를 동일하게 다루는 구조여서 오히려 비효율적일 수 있었습니다.
  • 따라서 Generational ZGC에서는 Young 객체를 빠르게 수집할 수 있도록 세대 구분을 도입한 것입니다.