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 객체를 빠르게 수집할 수 있도록 세대 구분을 도입한 것입니다.