-
[CS] 자바 Minor GC, Major GC(Full GC)CS 2024. 1. 26. 23:37
Heap 영역에서 GC가 발생하는데 Young 영역과 Old 영역으로 이루어져 있습니다.
[CS] 자바 Gabage Collection
Gabage Collection : GC라고 하며 Heap 영역에서 참조되지 않는 객체의 자원을 해제해서 메모리 공간을 효율적으로 사용할 수 있게 도와줍니다. 하지만 GC가 동작하는 동안 다른 동작이 멈추게 되는데
devlog-jul95.tistory.com
이글 참조.
Young 영역에서 발생하는 GC를 Minor GC라고, Old 영역에서 발생하는 GC를 Major GC 또는 Full GC라 합니다.
Eden 영역에는 new로 생성된 새로운 객체가 옮겨집니다.
만약 Eden 영역에 객체가 가득 차게 된다면 Minor GC가 발생합니다.
이때 Eden 영역에서 Reachable 객체 탐색합니다.
Eden 영역의 Reachable 객체를 Survivor 0 영역으로 보내고 Unreachable 객체의 자원을 해제합니다.
그리고 Survivor 0 영역에 있는 객체들의 age를 하나씩 카운트해 줍니다.
Eden 영역에서 위와 같은 과정을 반복하면서 Eden 영역의 Reachable객체와 Survivor 0/1 객체가 Survivor 0/1을 반복 이동하며 age 카운트를 올립니다.
이때 age가 임계치에 닿으면 임계치에 다은 객체를 Old 영역으로 이동시킵니다.
Old 영역에 객체가 가득 차게 되면 Old 영역에서도 GC가 발생하면서 Old 영역을 비워줍니다. 이것을 Major GC 또는 Full GC라고 합니다.
이 처럼 객체에 age를 통해 오래된 객체 또는 참조되지 않은 객체를 카운터 해주면서 Stop-The-World를 효율적으로 관리하고 있습니다. JVM에는 여러 가지 GC가 존재하며 Minor, Major GC 외에도 상황에 따라 효율적인 GC들이 있습니다.
'CS' 카테고리의 다른 글
[CS] RabbitMQ 기본 (0) 2024.03.20 [CS] Java HashMap의 동작 과정 (0) 2024.03.01 [CS] 자바 Gabage Collection (0) 2024.01.18 [CS] 자바 메모리 영역 (0) 2024.01.16 [CS] Java의 JVM이란? (0) 2023.12.25