對象頭記錄引用計數,引用+1,釋放-1,計數為 0 即垃圾。**致命缺陷:無法處理循環引用**(A→B, B→A,計數永不為 0)。
從 **GC Roots** 出發,沿引用鏈遍歷,**可達對象 = 存活,不可達 = 垃圾**。

本質是 **標記-清除** 思想的起點:以棧幀為根構建對象樹,樹上對象存活,其餘可回收。
對象大小不一、生命週期不同 → 回收後留下不連續空閒塊 = **碎片**。
| 算法 | 碎片處理 | 缺點 |
|---|---|---|
| 標記-清除 | 不處理,產生大量碎片 | 大對象分配困難 |
| 複製 | 將存活對象復制到新區,**天然無碎片** | 浪費 50% 空間 |
| 標記-整理 | 標記後將存活對象**向一端移動**,更新引用 | 移動開銷大,需 STW |
**新生代用複製**(存活少、效率高)、**老年代用標記-整理/並發標記-清除+定期壓縮**。
**暫停所有應用線程** → GC 獨佔堆 → 掃描/回收 → 恢復應用。
**優點**:實現簡單、結果準確。
**缺點**:**堆越大、停頓越長** → 大堆 (>4GB) 停頓達秒級,違背實時性。
GC 核心三問 —— **識別垃圾 (可達性)、清理碎片 (複製/整理)、協調並發 (STW vs 並發)** —— 貫穿從 Serial 到 ZGC 的所有演進。理解這三個問題的權衡,是調優與架構選型的指南針。