객체 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 객체를 빠르게 수집할 수 있도록 세대 구분을 도입한 것입니다.
'Language & Framework' 카테고리의 다른 글
| AI 시대, 더욱 중요해진 클린 코드 - 백기선의 리팩토링 강의 후기 (4) | 2025.08.18 |
|---|---|
| GC 알고리즘별 Minor GC와 Survivor 영역의 동작 비교 정리 (0) | 2025.05.17 |
| Java GC의 역사와 진화: STW에서 동시 수집으로 (0) | 2025.05.17 |
| JVM 메모리 구조, PermGen → Metaspace 전환, Spring Bean Scope와 CGLIB의 연관성 (0) | 2025.05.17 |
| JVM 메모리 구조 (0) | 2022.07.29 |