728x90
● 가비지 컬렉터(Garbage Collector)
- 메모리 관리를 위해 힙영역에서 더 이상 사용되지 않는 객체를 메모리에서 제거하는 것
● 동작 원리
- JVM에서 GC의 스케줄링을 담당하여 Java 개발자에게 메모리 관리의 부담을 덜어준다.
- GC는 background에서 데몬 쓰레드로 돌며 더 이상 사용되지 않는 객체들을 메모리에서 제거하여 효율적인 메모리 사용을 돕는다.
- 객체는 힙 영역에 저장되고 스택 영역에 이를 가리키는 주소값이 저장되는데 참조되진 않는객체를 메모리에서 제거한다.
● 물리적 공간 (Heap 영역)
- Young Generation
- Eden
- 새로 생성된 객체들이 위치
- Minor GC 발생
- Survivor 1, 2
- Eden 영역에서 GC 실행 후 살아남은 객체들이 위치
- Minor GC 발생
- Old Generation
- Suvivor 영역에서 여러번의 GC 후 살아남는 객체들이 위치
- Major GC 또는 Full GC 발생
● STW
- STW(Stop The World)
- GC가 처리하는 동안 Java의 프로세스가 모두 멈춰버리는 형상이다.
- Old영역이 가득차면 Major GC 또는 Full GC가 동작하는데 이때 STW 상태가 되므로 이를 최소화 하는 것이 중요하다.
● GC 처리방식
- Serial GC
- Mark-sweep-compact 알고리즘
- 적은 메모리와 CPU 코어 갯수가 적을 때 적합하다.
- Paraller GC
- Serial GC와 알고리즘은 같지만 GC를 처리하는 Thread가 여러개 이다.
- 메모리와 코어가 충분할 때 적합하다.
- Paraller Old GC
- Paraller GC에서 Old GC 알고리즘을 개선한 버전이다.
https://wooody92.github.io/java/GC-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC/
GC 동작원리
GC 구조와 동작원리
wooody92.github.io
728x90
'Programming > JAVA' 카테고리의 다른 글
접근자 프로퍼티란? (0) | 2022.10.31 |
---|---|
static 변수와 static 메소드 (0) | 2022.10.30 |
프로세스와 스레드 (Process vs Thread) (0) | 2022.10.29 |
자바의 특징 (0) | 2022.10.27 |
객체 지향 언어란? (Object Oriented Language) (0) | 2022.10.27 |
댓글