finalize() 從 Java 9 開始 deprecated,Java 18 標記為 deprecated for removal,替代方案是 java.lang.ref.Cleaner。這篇從 PhantomReference 和 ReferenceQueue 的運作原理講起,說明 Cleaner 如何用獨立的清理執行緒安全地回收 native 資源,解決 finalize 的兩次 GC 回收、物件復活、執行時機不可控等問題,附完整程式碼範例、常見錯誤用法與 JDK 內部的實際應用案例。
Java Cleaner 與 PhantomReference 教學|取代 finalize() 的資源清理機制
Java GC 完整解析|垃圾回收原理、七種 GC 比較、面試重點整理
Java GC 是技術面試必考也是 JVM 效能調校的關鍵知識。這篇從 Heap 的 Young Gen、Old Gen 分代結構與 GC Roots 可達性分析講起,整理 Mark-Sweep、Copying、Mark-Compact 三種基礎回收演算法的差異,再逐一比較 Serial、Parallel、CMS、G1、ZGC、Shenandoah、Epsilon 七種收集器的設計取捨與適用場景,附 JVM 參數速查表與面試高頻問題整理。
OracleJDK、OpenJDK之外的Java JDK JRE JVM環境選擇
想下載 Java 開發環境卻被 OracleJDK、OpenJDK、Eclipse Temurin、Amazon Corretto、Azul Zulu 等選項搞混?本文整理 Oracle 從 Java 8 到 Java 25 的授權變化,包含 2023 年改按員工數計價的重大變動,並介紹 Eclipse Temurin、Amazon Corretto、Azul Zulu、Microsoft、IBM Semeru、Oracle GraalVM、BellSoft Liberica 等主流發行版特色與適用情境。