JVM tự động quản lý bộ nhớ — cấp phát object và giải phóng những object không còn truy cập được thông qua garbage collection (GC) — nên bạn không cần giải phóng bộ nhớ thủ công. Hiểu các vùng bộ nhớ và hành vi của GC là chìa khóa để tinh chỉnh performance và chẩn đoán các vấn đề về bộ nhớ.
Các vùng bộ nhớ JVM
HEAP — nơi tất cả OBJECT tồn tại (được chia sẻ giữa các thread), GC hoạt động ở đây
├── Young Generation — object mới (đa số chết sớm)
│ ├── Eden — các cấp phát mới vào đây
│ └── Survivor — object đã sống sót qua một lần young GC
└── Old (Tenured) Gen — object sống lâu (được promote từ young)
STACK — theo từng thread; method frame, biến cục bộ, primitive cục bộ, reference
Metaspace — metadata của class (thay thế PermGen từ Java 8+)
