면접질문)가비지 컬렉션의 동작 방식

SionBackEnd·2023년 1월 10일
0

CS

목록 보기
6/9

가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap영역에서 동정으로 활당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스입니다.

가비지 컬렉션이 관리하는 힙영역은 객체의 생존기간을 기준으로 young 제너레이션 과 old 제너레이션 영역으로 구분되어있는데 Young은 Eden, survival0, survival1 으로 나누어져있습니다.

먼저 모든 객체는 처음 생성되면 Eden영역에 생성되며 Eden영역이 꽉 차게 되면, Mark-Sweep 알고리즘을 통해서 사용되지 않는 객체를 제거하게 됩니다. 살아남은 객체는 survival0 또는 1으로 넘어가게 되며, age(살아남은 횟수)가 1 오르게 됩니다. 이때 survival공간은 두개중 하나는 꼭 비워져있어야합니다. 그렇게 Eden영역이 꽉 차게 될때 마다 살아남은 객체를 옮기다 특정 age가 되면 old영역으로 넘어가게 됩니다. 지금까지가 minor-GC(Young 영역에서의 가비지 컬렉션 동작 방식)입니다. Young영역보다 크기가 큰 old영역은 꽉차게 되면 major-GC(full-GC라고도합니다.)가 작동되고 모든 old영역에 있는 객체들을 Mark-Sweep알고리즘을 통해서 사용되지 않는 객체를 제거하게 됩니다.

추가적으로 major-GC는 Minor-GC보다 10배 정도 속도 차이가 납니다.

참고 사이트

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98GC-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC#%EA%B0%80%EB%B9%84%EC%A7%80_%EC%BB%AC%EB%A0%89%EC%85%98_%EB%8F%99%EC%9E%91_%EA%B3%BC%EC%A0%95

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글