GC , 가비지 컬렉션 이란?
자바 프로세스가 동적으로 할당했던 메모리 영역중에, 필요없는 영역을 해제하는 기능
=> GC가 없다면, 더이상 사용하지 않는 잉여객체들이 메모리를 모두 차지해
OOM ( Out of Memory ) 가 발생하면서 프로세스가 종료될 것.
- 장점
1. 프로그래머 입장에서 완벽하게 메모리 관리를 하지 않아도 된다.
=> 바라보고 있는 포인터, 언제 어떤 메모리를 해제할지 신경쓰지 않아도 됌
2. 불필요한 자원을 해제하여, 메모리 초과 방지
- 단점
1. GC 과정속에서 비용이 발생한다.
2. GC의 타이밍을 결정할 수 없다.
=> GC시에 stop-the-world 현상이 발생하여, 서비스 순단이 있을수 있다.
※ stop-the-world : GC 실행시, 자원을 해제하기 위해 JVM이 어플리케이션 실행을 멈추는 것
프로세스
GC의 대상은 크게 Eden, Survivor From/To, Old 영역이고, 대상에 따라 Minor, Full GC 로 구분할 수 있다.
Minor GC
1. 새로 생성된 객체가 Eden 영역에 할당된다.
2. Eden 영역에서 GC가 일어나고, 계속 사용하는 객체들은 Survivor From 영역으로 이동한다.
3. 다음 GC가 일어날때, From 영역의 객체들은 Survivor To 영역으로 이동한다.
4. Survirvor From 영역은 Clear 해지고, 계속되는 GC속에 살아남은 객체들은 Old 영역으로 옮겨진다.
Full GC
1. Old 영역에서 수행되는 GC를 Full GC라 하며, Minor GC 보다 시간이 더 소요된다.
'서버운영 > 자바 GC ( Garbage Collection )' 카테고리의 다른 글
GC 튜닝 (0) | 2021.04.06 |
---|---|
GC분석 - GUI를 통한 gc 추이분석 (0) | 2021.04.05 |
GC 분석 - gc 케이스 분석 (0) | 2021.04.05 |
GC 관리 (0) | 2021.04.04 |