Java 堆是運行時數據區,類實例(對象)在此分配空間。JVM 堆存儲應用創建的所有對象(通過 new、newarray 等指令),但無需程序代碼顯式釋放。內存回收由垃圾收集器 (GC) 自動管理。雖然 JVM 規範不強制特定 GC 技術,但受限於內存有限性,所有實現均包含 GC 管理的堆。
核心兩步:① 發現無用對象 ② 回收其內存空間。
大多數算法使用根集:正在執行的 Java 程序可訪問的引用變量集合(局部變量、參數、類變量)。從根集可達對象為活動對象(含間接可達),不可達對象符合回收條件。
finalize() 不可靠,資源釋放用 try-with-resources / finally-Xlog:gc*)調優堆大小與收集器參數