Garbage Collection이란?
- 개발 시 유효하지 않은 메모리인 가비지가 발생하나 개발자가 메모리를 직접 해제하지 않음 why? -> JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해줌
ex)
Student student = new Student();
student.setName("학생1");
student = null;
// Garbage 생성
student = new Student();
student.setName("새로운 학생");
기존의 학생1로 생성된 student객체는 더 이상 참조하지 않고 사용되지 않아 가비지가 되고 이를 가비지 컬렉터가 청소해줌
가비지 컬렉터를 어떻게 활용해야할까?
1. JVM은 heap 메모리 영역이 존재한다. 각 영역을 살펴보자
- young : 젊은 reference가 살아있는 곳
- eden : 막 생성된 객체가 존재
- survivor : eden에서 생존한 객체가 일정시간 생존
- old : 특정 횟수 이상 살아남은 reference가 존재
- permanent: Method Area의 메타정보가 기록
- Minor GC / Major GC