본문 바로가기
공부용/JAVA

Garbage Collection (GC)

by 엑스포스 2022. 11. 19.
반응형

 

Garbage Collection (GC)

첫 회사에 입사 후, 자바 개발을 3년정도 했지만 돌이켜보니 그냥 생각없이 기존 코드따라 개발을 해왔을 뿐,
실제 어떻게 동작을 하고 더 좋은 성능을 내기 위해선 어떻게 해야하는지 모르고 일을 해왔다.
이번에 이직준비를 하면서 조금이나마 공부하고 정리를 해놓기 위해 이 문서를 작성한다.

GC란 ?

GC란

Garbage Collection

의 약어로 자바의 메모리 관리를 위해

할당 된 메모리를 자동으로 해제

해주는 역할을 한다. 때문에 자바에서는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다.

stop-the-world

stop-the-world란, GC를 실행하기 위해서 JVM이 어플리케이션의 실행을 멈추는 것이다.
stop-the-world가 발생하면 GC를 실행하는 스레드를 제외한 모든 스레드가 작업을 멈추고, GC가 끝난 후 다시 작업을 실행한다.
대게

GC성능을 튜닝한다는 것

은 이

stop-the-world의 시간을 줄이는 것

이다.

Young Generation? Old Generation?

HotSpot Vm에서는 GC를 위해 Young Generation과 Old Generation으로 영역을 나누었다.

  • Young Generation : 새롭게 생성된 객체의 대부분이 해당 영역에 포함된다. 대부분의 객체가 금방 접근 불가능 상태가 되기 때문에, Young 영역에서 생성되었다가 사라진다. 이 구간에서 일어나는 GC를 Minor GC라고 한다.
  • Old Generation : 접근 불가능 상태가 되지 않아, Young Generation 영역에서 살아남은 객체가 해당 영역에 복사된다. 대부분 Young 영역보다 크게 할당하며, 크기가 큰 만큼 Young 영역보다 GC가 적게 발생한다. 이 구간에서 일어나는 GC를 Major GC(Full GC) 라고 한다.

참고

가비지 컬렉터(GC)에 대하여
Java Garbage Collection

반응형

'공부용 > JAVA' 카테고리의 다른 글

JVM (Java Virtual Machine)  (0) 2022.11.19
JAVA - 문자열 클래스  (0) 2022.11.19