728x90
개요
- 자바의 메모리 관리 방법입니다.
- 자바의 객체는
Runtime Data Areas의Heap에 할당됩니다. - 자바는 개발자가 메모리를 관리하지 않습니다.
Garbage Collector가 객체의 메모리를 해제합니다.- GC가 수행될 때, GC를 위한 스레드를 제외하고 모든 스레드의 작업이 중지됩니다(
Stop the World). - GC 튜닝은
Stop the World의 시간을 줄이는 것입니다.
가설 : Weak Generational Hypothesis
- 대부분의 객체는 금방
접근 불가능 상태(unreachable)가 됩니다. - 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재합니다.
GC
- 대부분의 객체는 Young 영역에서 GC(Minor GC)됩니다.
- Young 영역의 GC 대상을 판별할 때, Old 영역의 객체가 참조하는지 식별하기 위해서 카드 테이블이라는 청크를 확인합니다.
- Old 영역의 메모리가 포화상태에 이르면 GC(
Major GC==Full GC)가 이뤄집니다.
Old 영역에 대한 GC
Serial GC- 싱글스레드를 활용하여 GC를 수행합니다.
- 멀티 프로세서를 활용할 수 없습니다.
Serial GC는 가능한 한 절대로 사용하지 않아야 합니다.
Parallel GC- 병렬로 Major GC를 수행합니다.
Concurrent Mark & Sweep GC- 일시 정지 시간이 짧습니다.
- GC 작업과 프로세스 리소스를 공유할 수 있습니다.
JDK 9부터 사용하지 않습니다.
G1(Garbage First) GC- 멀티 프로세스 프로그램을 위한 GC입니다.
- 높은 처리량을 보여줍니다.
Z GCJDK 11에서부터 실험적으로 도입되었습니다.scalable low latencyGC입니다.- 모든 종류의 비싼 작업을 동시에 수행하며, 스레드를 중지하지 않는다는 특징이 있습니다.
참고자료
'Language | Basic > Java' 카테고리의 다른 글
| Java의 스레드(Thread) 알아보기 (0) | 2021.06.02 |
|---|---|
| JVM의 Heap Area (0) | 2021.05.28 |
| JVM(Java Virtual Machine)이란 (0) | 2021.05.28 |
| Lambda와 함수형 인터페이스 (0) | 2021.05.18 |
| Stream API (0) | 2021.05.10 |