-
GC 기본 개념 , 종류Java&Spring/Java 2023. 9. 4. 17:06
GC 의 동작
→ Heap 영역에 존재하는 객체들에 대해 접근 가능한지 확인 한다.
→ GC Root 에서 부터 시작하여 참조 값을 따라가며 접근 가능한 객체들에 mark 하는 과정을 진행
→ Mark 되지 않은 객체 즉 , 접근 할 수 없는 객체는 제거(Sweep) 대상이 되고 , 해당 객체들을 제거
mark sweep comapct algo
Stop the world : GC 를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것
GC Root 가 가능한 대상
1. JVM 메모리의 stack 영역에 존재한는 참조 변수
2 . Method Area static 데이터3 . JNI 에 의해 생성되는 객체
Serial GC
- Single thread
- stw 가장 김
- mark sweep comapct 알고리즘으로 동작함
Parallerl GC
java 8의 default GC , Young 영역의 GC를 멀티 스레드 방식으로 사용한다.
Parallel Old GC
Old 영역까지 멀티스레드 방식을 사용
CMS GC (Concurrent Mark Sweep GC)
Reachable 한 객체를 한번에 찾지 않고 나눠서 찾는 방식을 사용
Initial Mark : GC Root 가 참조하는 객체만 마킹 , stop-the-world (sow)
Concurrent Mark : 참조하는 객체를 따라가며 , 지속적으로 마킹 , stop-the-world x
Reamark. : concurrent mark 과정에서 변경된 사항이 없는지 다시한번 마킹하며 확정하는 과정 ,sow
Concurrent Sweep : 접근할 수 없는 객체를 제거
G1GC
- java 9 default GC
- sow 시간 길이가 가장 짧음
- cms gc 를 개선하여 만든 gc
Heap 을 Region 이라는 일정한 부분으로 나눠서 메모리를 관리 , 구역별 탐색, 각각의 GC 발생
'Java&Spring > Java' 카테고리의 다른 글
자료구조 Stack , add vs push (0) 2023.09.04 Sort : Arrays.sort() vs Collections.sort() & 배열 다중 정렬 및 출력 (0) 2023.09.04 자바를 조심스럽게 열어 보았다 - Switch 문 (1) 2023.05.04 JAVA for , enhance for, Stream (0) 2022.11.01 자바 Switch 문 vs If else 문 성능 비교 (0) 2022.09.29