JVM은 메모리를 자동으로 관리합니다 — 객체를 할당하고 도달 불가능한 것을 **garbage collection(GC)**을 통해 해제합니다 — 따라서 수동으로 메모리를 해제하지 않습니다. 메모리 영역과 GC 동작을 이해하는 것은 성능을 튜닝하고 메모리 문제를 진단하는 핵심입니다.
JVM 메모리 영역
HEAP — 모든 객체가 사는 곳 (thread 간 공유), GC 가 여기서 작동
├── Young Generation — 새 객체 (대부분 일찍 죽음)
│ ├── Eden — 새 할당이 여기로 감
│ └── Survivor — young GC 에서 살아남은 객체
└── Old (Tenured) Gen — 오래 사는 객체 (young 에서 승격됨)
STACK — thread 별; 메서드 프레임, 지역 변수, 기본형 지역, 참조
Metaspace — 클래스 메타데이터 (Java 8+ 에서 PermGen 을 대체)
객체는 에 살고, 지역 변수와 참조는 thread별 에 삽니다. GC는 heap에 집중합니다.
