整理自實戰經驗與面試高頻考點,這 10 個細節常被開發者忽略,卻關鍵影響程式正確性與效能。
finalize() 不是解構函式finalize() 主要用於跨語言資源釋放(如 JNI 的 malloc/free)。GC 呼叫時間不確定,不可依賴它釋放關鍵資源,應使用 try-with-resources 或 AutoCloseable。static{} 在類載入時執行,非靜態區塊與建構子在建立物件時執行access$xxx),這也是為何內部類能打破封裝的原因。new HashMap(){{ put("k","v"); }},本質是建立匿名子類並在實例初始化區塊操作。注意:持有外部類引用,可能導致記憶體洩漏。InvocationHandler + Proxy.newProxyInstance()Proxy,實作目標介面。HashMap 容量與負載因子調優new HashMap<>(capacity, loadFactor) 避免擴容與再雜湊開銷。預設負載因子 0.75,容量達 3/4 觸發擴容。transient 關鍵字阻止欄位序列化ThreadLocal 應宣告為 static 欄位ThreadLocal 變數,每條執行緒獨立儲存副本。非 static 會導致每個實例建立獨立 Map,失去隔離意義。