Done is better than perfect
[Java] 가비지 컬렉터 본문
Java의 가비지 컬렉터란?
개발자가 메모리를 직접 해제하지 않아도 가비지 컬렉터가 메모리를 주기적으로 정리해 줍니다
그 전에 JVM에서 Heap 메모리가 어떤 구성으로 되어있는지 알아봅시다
JVM에는 Heap 메모리 영역이 존재합니다.
Young: 비교적 젊은 애들
- eden : young 중에서도 젊은 애들
- Survivor: eden에서 살아남은 애들
Old: 특정 횟수 이상 살아남은 애들
Permanent(Metaspace): 클래스 정보, 메서드 정보 등이 있다.
((JVM 옵션을 통해 힙 메모리 크기를 설정할 수 있다~~))
Young Generation 이 가득 찼을 때 수행 됩니다 -> Minor GC: 시간이 적게 걸림
Old Generation 이 가득 찼을 때 수행 됩니다-> Major GC: 시간이 오래 걸림
가비지 컬렉터의 동작방식
<Mark & Sweep>
1. Mark 단계
프로그램에서 접근할 수 있는 객체(참조되고 있는 객체) / 그렇지 않은 객체를 구분하기
2. Sweep 단계
필요 없는거 제거하는 것임
-> 하지만 이 방식에는 문제점이 있습니다
1) Memory Fragmentation
2) Stop the World
3) 느린 속도
그래서 뭐 최신 가비지 컬렉터가 나왔다고 합니다
-Mark-Compact 알고리즘
-G1 GC
-Shenandoah, ZGC 등등이 있습니다
'Java' 카테고리의 다른 글
[Java] Java가 실행되는 과정 (0) | 2024.10.21 |
---|---|
[Java] 특징 정리 (2) | 2024.10.10 |
[Java] 기본 자료형 wrapper class 차이 (2) | 2024.09.09 |
[Java] HashMap 정리 (2) | 2024.09.06 |
[JAVA] priority Queue (0) | 2024.03.15 |