컴퓨터 프로그램에서 메모리를 관리하기 위한 기법
프로그램에서 사용하지 않는 메모리를 자동 탐색 / 해제하여 메모리 누수 방지, 프로그램 성능 향상
JVM이 자동으로 수행
과정
- 메모리 관리
- 메모리 탐색
- 마킹
- 해제(릴리스)
- 압축
알고리즘
- Mark-Sweep - 메모리에서 사용되지 않는 객체를 표시하고 표시된 객체들을 정리
- Mark-Compact - Mark-Sweep와 비슷하지만 정리한 후 남은 객체를 한곳으로 모아 압축
- Copying - 실행되는 객체들을 새로운 메모리로 복사하여 정리
- 힙 메모리를 두개로 나누어서 관리 - 실행되는 객체가 저장되는 영역 / 새로운 객체가 생성되는 영역
- 실행되는 객체들을 다른 곳에 복사하여 정리 → 실행되는 객체만 존재하는 영역 발생
- 객체를 복사하는데 비용으로 인한 오버헤드
- 힙 영역의 절반만 사용하여 공간 활용 비효율
- Reference counting - 각 객체에서 참조 횟수를 기록하고 횟수가 0인 객체들을 정리
종류
- Serial GC
- 기본적인 가비지 컬렉션
- 싱글 스레드로 수행됨
- Parallel GC
- 멀티 스레드를 이용한 가비지 컬렉션
- CMS GC(Concurrent Mark Sweep)
- 응용 프로그램이 실행될때 동시에 실행되는 가비지 컬렉션
- G1 GC
- 힙을 더 작은 영역으로 나누어 실행하는 가비지 컬렉션
- ZGC
- 일시 중지를 최소화 하면서 큰 힙을 처리하도록 설계된 대기 시간이 짧은 가비지 컬렉션
'자바' 카테고리의 다른 글
클래스 Class (0) | 2023.01.29 |
---|---|
자바 이미지 크롭 (0) | 2023.01.26 |
직렬화 / 역직렬화 - 자바 (0) | 2023.01.17 |
List Map Set (0) | 2022.10.19 |
자바 (0) | 2021.12.31 |