우아한 테크톡

[10분 테코톡] 👌던의 JVM의 Garbage Collector

dauneee 2022. 1. 8. 23:37

JVM이란?

 

- 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램

역할 ) 메모리 관리, Garbage Collector 수행

 

Garbage Collector

 

- 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능

                     

동적으로 할당한 메모리 영역

- Stack : 정적으로 할당한 메모리 영역

원시 타입의 데이터 값과 함께 할당, Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당


- Heap : 동적으로 할당한 메모리 영역

모든 Obiect타입의 데이터가 할당, Heap영역의 Object를 가리키는 참조변수가 Stack에 할당

 

 

 

< Garbage Collector 과정 >

 


1. Garbage Collector가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 잇는지 찾아서 마킹한다.

2. Reachable Object가 참조하고 았는 객채도 찾아서 마킹한다.

3. 마킹 되지 않은갹체를 Heap에서 제거한다.

 

 

< Garbage Collector 종류 >

 

1. Serial GC

 

- GC를 처리하는 스레드가 1개이다.
- CPU 코어가 1개만 있을 때 사용하는 방식
- Mark - Compact collection 알고리즘 사용

 

2. Parallel GC

 

- GC를 처리하는 스레드가 여러개이다.
-Serial GC보다 빠르게 객체를 처리할 수 있디.
-Parallel GC는 메모리가 충분하고 코어의 개수가 많을 때 사용하면 좋다

 

3. Concurrent Mark Sweep GC

 

- Stop - the - world의 시간이 짧다.
- 어플리케이션의 응답 시간이 빨라야 할 때 CMS GC를 사용한다.
- 다른 GC 방식보다 메모리와 CPU를 더 많이 사용한다.
- Compaction 단계가 제공되지 않는다.

 

4. G1 GC

 

- 각 영역을 Region 영역으로 나눈다.
- GC가 일어날 때, 전체 영역을탐색하지 않는다
- G1 GC는 STW 시간이 짧다.
- Compaction을 사용한다

 

 

 

 

 

 

 

 

 

< 영상 >

https://www.youtube.com/watch?v=vZRmCbl871I