Garbage
- 주소를 잃어버려서 더 이상 사용할 수 없게 된 메모리.
- 앞으로 사용하지 않으면서 메모리를 할당 받고 있는 객체.
Garbage Collector(GC)
- 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 정리해주는 프로그램.
Heap : 동적으로 할당한 메모리 영역. 모든 Object 타입의 데이터가 할당. Heap 영역의 Object를 가리키는 참조 변수가 Stack.에 할당.
stack : 정적으로 할당한 메모리 영역. 원시 타입의 데이터가 값과 함께 할당, Heap 영역에 생성된 Object 타입의 데이터의 참조값 할당.
- 메소드가 종료 될 때, Stack에 참조되는 Heap이 없을때 그 Object는 unreachable 상태가 된다.
JVM(Java Virtual Machine)
- 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램.
- 메모리관리, GC 수행.
GC의 과정
1. GC가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹(Mark)
2. Rechable Object가 참조하고 있는 객체도 찾아서 마킹.(Mark)
3. 마킹되지 않은 객체를 Heap에서 제거(Sweep)
Heap
- New Generation, Old Generation 영역으로 나뉨.
Stop the World.
- GC를 실행하기 위해 JVM이 앱 실행을 멈추는것.