반응형
Garbage Collection (GC)
첫 회사에 입사 후, 자바 개발을 3년정도 했지만 돌이켜보니 그냥 생각없이 기존 코드따라 개발을 해왔을 뿐,
실제 어떻게 동작을 하고 더 좋은 성능을 내기 위해선 어떻게 해야하는지 모르고 일을 해왔다.
이번에 이직준비를 하면서 조금이나마 공부하고 정리를 해놓기 위해 이 문서를 작성한다.
GC란 ?
GC란
Garbage Collection의 약어로 자바의 메모리 관리를 위해
할당 된 메모리를 자동으로 해제해주는 역할을 한다. 때문에 자바에서는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다.
stop-the-world
stop-the-world란, GC를 실행하기 위해서 JVM이 어플리케이션의 실행을 멈추는 것이다.
stop-the-world가 발생하면 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) 라고 한다.
참고
반응형
'공부용 > JAVA' 카테고리의 다른 글
JVM (Java Virtual Machine) (0) | 2022.11.19 |
---|---|
JAVA - 문자열 클래스 (0) | 2022.11.19 |