JVMはメモリを自動的に管理します — オブジェクトを割り当て、**ガベージコレクション(GC)**を通じて到達不可能なものを解放します — つまり、メモリを手動で解放する必要がありません。メモリ領域とGCの動作を理解することは、パフォーマンスをチューニングしメモリの問題を診断するために重要です。
JVMのメモリ領域
HEAP — where all OBJECTS live (shared across threads), GC operates here
├── Young Generation — new objects (most die young)
│ ├── Eden — new allocations go here
│ └── Survivor — objects that survived a young GC
└── Old (Tenured) Gen — long-lived objects (promoted from young)
STACK — per-thread; method frames, local variables, primitive locals, references
Metaspace — class metadata (replaced PermGen in Java 8+)
オブジェクトは上に存在し、ローカル変数と参照はスレッドごとの上に存在します。GCはヒープに焦点を合わせます。
