728x90
GC종류를 명확하게 설명을 못해서 정리
GC종류
- Serial GC
- Parallel GC
- CMS GC
- G1 GC
Serial GC
-XX:+UseSerialGC
- 32비트 JVM에서 돌아가는 싱글쓰레드 어플리케이션에서 사용
- MinorGC, MajorGC 모두 순차적으로 수행 (싱글쓰레드 방식)
- Deletion and Compacting 수행
Parallel GC (Throughput Collector)
-XX:+UseParallelGC
- 64비트 JVM에서 돌아가는 멀티 CPU, 유닉스 머신에서 사용
- Default로 young generation에서만 멀티스레드를 활용, 옵션을 통해 old generation에서도 멀티스레딩 활용 가능
- 많은 CPU를 사용하기 때문에 GC의 부하를 줄이고, 애플리케이션 처리량을 증가시킬 수 있음
- JAVA 8까지 Default로 설정되어 있음
CMS (Concurrent Mark & Sweep GC) GC
-XX:+UseConcMarkSweepGC
- GC 작업을 애플리케이션 스레드와 동시 수행함
- STOP THE WORLD 시간이 매우 짧고, 다른 GC방식보다 메모리와 CPU를 더 많이 사용함
- low-latency collector로도 알려져 있으며, 힙 메모리 영역의 크기가 클 때 적합
- Compaction 단계가 기본적으로 제공되지 않음
G1 GC
-XX:+UseG1GC
- 기존 Young, Old영역 개념이 아닌 Resion 개념을 도입한 GC 방식
- 하나이상의 Resion 영역에서 객체를 복사하여 다른 Resion으로 이동시키는 방식
- CMS 대체하기 위하여 만들어짐
- Heap 영역에 전역적으로 마킹하고, 가장 많은 공간이 있는 곳부터 메모리 회수를 진행함
- JAVA 7부터 사용이 가능하며, JAVA 9에는 Default로 설정이 되어 있음
'JAVA' 카테고리의 다른 글
[JAVA] JVM 구조 (0) | 2021.06.03 |
---|---|
[JAVA] Enum (0) | 2021.06.02 |
[JAVA] 상태패턴 (0) | 2021.05.21 |
[JAVA] Builder 패턴 (0) | 2021.05.16 |
[JAVA] 상속 / 컴포지션 (0) | 2021.05.15 |