들어가기 전에 : 가비지 컬렉션이란?
- 프로그램 런타임에서, 낭비되는 메모리가 없도록 자동으로 메모리를 정리해주는 것
자바의 메모리에 대한 이해
<aside>
💡 가비지 컬렉션을 이해하기 위해서는, Java에서 객체가 메모리의 어디에 저장되는지를 이해하는 것이 필수입니다
</aside>
변수와 객체의 저장
Java에서 변수와 객체가 생성되면, 아래와 같이 메모리에 저장된다
- 변수 : 스택 영역에 저장된다
- 객체 : 힙 영역에 저장된다
- 이후 변수와 객체를 참조로 연결한다
- 모종의 이유(함수의 종료로 인한 지역변수 소멸, 스레드 소멸)등으로 변수가 사라지면, 객체만 덩그러니 남는다
변수의 접근가능성
접근가능성도 그 강도에 따라 여러 종류로 구분됩니다
Root Set
WeakReachability
StrongReachability
SoftlyReachability
힙 메모리의 구성