쓰레기 수집에서 젊은 세대의 크기는 가비지 컬렉션 성능에 큰 영향을 미칩니다. 젊은 세대는 대부분의 새로운 물체가 할당되는 힙의 일부이며, 구식보다 자주 수집됩니다. 젊은 세대 규모와 쓰레기 수거 성능의 관계는 가비지 수집 이벤트의 빈도 및 지속 시간과 관련된 다양한 트레이드 오프를 포함합니다.
작은 컬렉션의 빈도
젊은 세대의 크기를 증가 시키면 일반적으로 작은 쓰레기 수집이 줄어 듭니다. 작은 컬렉션은 젊은 세대가 채워질 때 발생하므로 더 큰 젊은 세대는 컬렉션이 트리거되기 전에 새로운 할당을위한 더 많은 공간을 제공합니다. 이는 이들 컬렉션의 빈도를 줄이며, 이는 작은 컬렉션이 일반적으로 주요 컬렉션보다 짧고 덜 파괴적이기 때문에 성능을 향상시킬 수 있습니다. 젊은 세대가 커지면 JVM은 즉시 수집 할 필요없이 더 많은 물체를 할당하고 살아남을 수 있으며, 가비지 수집에 대한 중단이 적습니다.
구식 및 주요 컬렉션의 크기
그러나 총 힙 크기가 고정되면 더 큰 젊은 세대는 더 작은 구식을 의미합니다. 구식은 젊은 세대에서 여러 컬렉션에서 살아남은 물체를 저장하고 수명이 길어지는 경향이 있습니다. 더 작은 구식은 더 자주 주요 주요 컬렉션으로 이어지며, 이는 사소한 컬렉션보다 일시 중지 시간 및 CPU 사용 측면에서 더 비쌉니다. 주요 컬렉션은 구식 세대를 정리하고 너무 자주 발생하면 응용 프로그램 처리량 및 응답 성에 큰 영향을 줄 수 있습니다.
최적 균형은 객체 수명에 따라 다릅니다
젊은 세대의 최적 크기는 응용 프로그램 객체의 할당 및 수명 특성에 따라 다릅니다. 응용 프로그램이 많은 단기 객체를 생성하는 경우, 더 큰 젊은 세대는 주요 수집 주파수를 지나치게 증가시키지 않고 작은 수집의 빈도를 줄임으로써 성능을 향상시킬 수 있습니다. 애플리케이션에 많은 장기 객체가있는 경우 비용이 많이 드는 주요 컬렉션을 피하기 위해 적절한 구식 공간이 중요 할 수 있도록 크기의 균형을 유지합니다.
JVM 튜닝 옵션
젊은 세대 규모는 JVM 옵션을 사용하여 제어 할 수 있습니다. 예를 들어,`-xx : newratio` 옵션은 구세대와 젊은 세대 사이의 비율을 설정합니다. 예를 들어,`-xx : newratio = 3`은 구식이 젊은 세대의 크기의 3 배이므로 젊은 세대는 힙의 약 4 분의 1이라는 것을 의미합니다. `-xx : newsize` 및`-xx : maxnewsize '와 같은 옵션은 젊은 세대 크기에서 고정 크기 또는 경계를 설정하여보다 정확한 제어를 허용합니다. 젊은 세대 규모를 고정하면 쓰레기 수거 성능을 안정화시키는 데 도움이 될 수 있습니다.
젊은 세대 내 생존자 공간
젊은 세대 내에서 생존자 공간은 사소한 컬렉션에서 살아남지 만 아직 구식으로 승진하기에는 오래되지 않은 물체를 처리합니다. 생존자 공간 크기 조정 (`-xx : survivorratio`에 의해 구성됨)은 승진 전에 젊은 세대의 객체가 얼마나 오래 머무르는 지에 영향을 미칩니다. 너무 작은 생존자 공간은 조기 홍보를 유발하여 구식 크기와 주요 수집 빈도가 증가합니다. 너무 큰 생존자 공간은 메모리를 폐기하고 젊은 세대의 새로운 할당 능력을 줄입니다.
처리량 및 일시 중지 시간에 영향을 미칩니다
젊은 세대가 커지면 작은 수집의 빈도가 줄어들어 GC 오버 헤드를 줄이고 처리량이 향상됩니다. 그러나 사소한 수집이 발생하면 더 큰 힙 공간으로 인해 더 오래 걸릴 수 있습니다. 반대로, 작은 젊은 세대는 더 빈번하지만 짧은 사소한 컬렉션으로 이어집니다. 응용 프로그램 처리량, 대기 시간 및 일시 중지 시간에 대한 전반적인 영향은이 트레이드 오프에 따라 다릅니다.
경험적 튜닝 및 로깅
JVM Garbage Collection 벌목을 모니터링하면 생존자 공간 사용량과 함께 작은 및 주요 컬렉션의 빈도 및 지속 시간을 분석하여 젊은 세대의 올바른 크기를 결정하는 데 도움이 될 수 있습니다. `-xlog : gc, age`와 같은 도구 및 옵션은 실제 워크로드 특성을 기반으로 이러한 매개 변수를 효과적으로 조정하기 위해 자세한 GC 동작 데이터를 제공합니다.
요약
요약하면, 젊은 세대 규모는 가비지 수집 성능에 영향을 미칩니다.
- 젊은 세대가 커지면 작은 컬렉션의 빈도가 줄어들지 만 더 작은 구식으로 인해 주요 컬렉션의 빈도를 증가시킬 수 있습니다.
- 작은 젊은 세대는 사소한 수집 빈도를 증가 시키지만 약간의 수집 시간을 단축시킵니다.
- 최적의 크기는 응용 프로그램의 객체 수명 패턴에 따라 다릅니다.
-`-xx : newratio`,`-xx : newsize` 및`-xx : maxnewsize '와 같은 JVM 매개 변수는 튜닝을위한 젊은 세대 크기를 제어합니다.
- 생존자 공간 크기는 객체 홍보 및 전반적인 GC 효율에 영향을 미칩니다.
- 성능 튜닝에는 경험적 GC 로그 및 모니터링으로 정보를 제공하는 처리량 및 일시 중지 시간을 최적화하기 위해 신중한 균형이 필요합니다.