生產環境難免遇到 OOM 與記憶體洩漏。不懂 GC 原理時往往無從下手;掌握核心策略至少能有的放矢,不至於束手無策。
首要問題是「可回收性判定」。
引用計數:為每個物件維護計數器,引用+1,釋放-1,歸零即回收。致命缺陷:無法處理循環引用。例如兩物件互相引用,計數永不歸零,導致記憶體洩漏。
Object a = new Object();
Object b = new Object();
a.field = b;
b.field = a;
a = null; b = null; // 計數仍為 1,無法回收
根搜尋算法:設定 GC Roots,從根出發搜尋,不可達物件即為垃圾。完美解決循環引用。

在根搜尋基礎上,現代 JVM 實現三種核心演算法:
詳細原理將在後續章節展開。
理解根搜尋是掌握 JVM GC 的鑰匙。下一章將深入剖析三大收集演算法的具體運作細節。
作者:zuoxiaolong(左潇龍)
出處:博客園左潇龍的技術博客