대부분의 경우 신세대 Eden 영역에서 객체가 먼저 할당됩니다. Eden 메모리 영역에 할당할 공간이 충분하지 않으면 가상 머신은 Minor GC(New Generation GC)를 트리거합니다. Minor GC 동안 가상 머신은 Eden 영역의 개체를 Survivor 영역 중 하나로 이동합니다.
소위 대형 개체는 많은 양의 연속 공간이 필요한 개체를 나타냅니다. 가상 머신은 XX:PretenureSizeThreshold 매개변수를 제공하므로 이 값보다 큰 개체는 이전 세대에서 직접 할당됩니다.
가상 머신은 메모리를 재활용할 때 세대별 수집 개념을 사용하여 이를 식별할 수 있어야 합니다. 어떤 객체를 신세대에 배치해야 하는지, 어떤 객체를 신세대에 배치해야 하는지. 이를 달성하기 위해 가상 머신은 각 개체에 대한 개체 수명을 정의합니다. 새 세대 GC 이후에도 개체의 수명은 1년씩 늘어납니다. Old Generation으로 승격되는 객체의 연령 제한은 -XX:MaxTenuringThreshold로 설정할 수 있습니다.
신세대 GC(Minor GC): 신세대에서 발생하는 가비지 수집 작업을 말합니다. 대부분의 객체가 임시적이기 때문에 Minor GC는 매우 자주 발생하며 회복 속도도 상대적으로 빠릅니다.
Old Generation GC(Major GC/Full GC): Old Generation에서 발생하는 GC를 의미하며, Major GC 발생 후 적어도 한 번 이상 Minor GC가 동반되는 경우가 많습니다. Major GC의 속도는 일반적으로 Minor GC보다 10배 이상 느립니다.
위 내용은 Java 가상 머신러닝 - 객체 메모리 할당 및 재활용 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!
관련기사 :
Java Virtual Machine에 대한 자세한 설명
Java Virtual Machine에 대한 심층적인 이해