반응형
참고 동영상
https://www.youtube.com/watch?v=vZRmCbl871I
JVM(Java Virtual Machine)
운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램
메모리 관리, Garbage Collector 수행
Garbage Collector
동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능
Stack : 정적으로 할당한 메모리 영역
원시 타입의 데이터가 값과 함께 할당, Heap영역에 생성된 Object 타입의 데이터의 참조 값 할당
Heap : 동적으로 할당한 메모리 영역 (개발자영역)
모든 Object 타입의 데이타가 할당, Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당
Garbage Collector 과정
- Garbage Collector가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지
찾아서 마킹한다. (Mark) - Reachable Object가 참조하고 있는 객체도 찾아서 마킹한다. (Mark)
- 마킹되지 않는 객체를 Heap에서 제거한다 (Sweep)
=> (Mark&Sweep)과정
Garbage Collector 종류
Serial GC
GC를 처리하는 스레드가 1개이다.
CPU 코어가 1개만 있을 때 사용하는 방식
Mark-Compact collection 알고리즘 사용
Parallel GC
GC를 처리하는 스레드가 여러 개 이다.
Serial GC보다 빠르게 객체를 처리할 수 있다.
Parallel GC는 메모리가 충분하고 코어의 개수가 많을 때 사용하면 좋다.
(Stop-The-World)
GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다
. Stop-The-World가 발생하면 GC를 실행하는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다.
GC 작업을 완료한 이후에 중단한 작업을 다시 시작한다.
Concurrent Mark Sweep GC (CMS GC)
Stop-The-World 시간이 짧다.
애플리케이션 응답 시간이 빨라야 할 때 CMS GC를 사용한다.
다른 GC 방식보다 메모리와 CPU를 더 많이 사용한다.
Compaction 단계가 제공되지 않는다.
G1 GC
각 영여을 Region 영역으로 나눈다.
GC가 일어날 때, 전체 영역(Eden, Survival, Old grneration)을 탐색하지 않는다.
G1.GC는 바둑판의 각 영역에 객체를 할당하고 GC를 실행한다.
그러다가, 해당 영역이 꽉 차면 다른 빈 영역에, 객체를 할당하고 GC를 실행한다.
G1 GC는 STW 시간이 짧다. Compaction을 사용한다.
반응형
'IT Study' 카테고리의 다른 글
[동영상 시청] MVC 패턴 (0) | 2022.07.08 |
---|---|
[동영상 시청] MVC 패턴 (0) | 2022.07.07 |
[동영상 시청] OOP 객체지향 프로그래밍 (0) | 2022.07.07 |
[동영상 시청] 알고리즘과 시간복잡도 (0) | 2022.06.12 |
[동영상 시청] 빌드와 배포 (0) | 2022.06.12 |