가비지 컬렉션 Garbage Collection

나무에물주기·2023년 1월 17일

CS

목록 보기
12/16

Reference : https://creampuffy.tistory.com/125#--%--Permanent%--Generation%EA%B-%BC%--Metaspace

GC는 프로그래머가 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 가비지 영역을 찾아서 해제하는 기능을 의미한다.

이러한 GC는 JVM의 메모리 영역 중 Heap 메모리에에서 이뤄지는데,

그 이유는 Java에서 새로운 객체가 할당될 때, Heap메모리 영역에 할당되기 때문이다.

GC는, 참조되는 변수를 구별하여(Mark), 참조되지 않는 변수를 해제(Sweep)하는 식으로 이뤄진다.

GC가 수행되는 동안, GC를 수행하는 스레드 이외의 스레드가 중단되어 애플리케이션 중단이 발생하는데,

이를 Stop the World라고 한다.

GC의 성능을 최적화하기 위하여 Heap 메모리 영역이 구분되어 있는데,

크게 Young & Old Generation으로 나눌 수 있고 각 영역에서 Minor GC와 Major GC가 수행된다.

Minor GC는 빈번하게 이뤄지고 적은 공간을 차지하기 때문에 속도에 주안점을 둡니다.

Major GC는 많은 공간을 차지하기 때문에 공간적 효율성에 더 주안점을 둔 알고리즘이 적용됩니다.

JAVA8부터는 Parallel GC가, JAVA9부터는 G1 GC가 기본 GC로 사용된다.**

profile
개인 공부를 정리함니다

0개의 댓글