首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 基礎核心知識點精講:垃圾回收、異常體系與 JVM 內存模型

     編輯:Java 綜合教學

Java 基礎核心知識點精講:垃圾回收、異常體系與 JVM 內存模型

27. 垃圾回收(GC)目的與觸發時機

目的:識別並回收不再使用的對象,釋放與重用內存資源。
關鍵點:將引用置 null 並不會立即觸發 GC;GC 觸發時機完全由 JVM 決定,開發者不可強制控制。

28. System.gc() 與 Runtime.gc()

  • 兩者本質相同,均為「建議」JVM 執行垃圾回收
  • 是否立即執行、採用何種算法,完全取決於 JVM 實現

29. finalize() 方法深度解析

  • 對象被 GC 回收前由 JVM 自動調用
  • 不可靠性:若內存充足,GC 可能永不執行,導致 finalize() 永不被調用
  • 主要用途:回收 JNI(Java Native Interface)調用 C/C++ 代碼分配的堆外內存
  • 純 Java 開發中一般無需關注,內存管理由 GC 自動完成

30. Java 堆與永久代(Metaspace)

  • 堆:運行時數據區,所有對象實例與數組均在此分配,由 GC 自動管理
  • 對象狀態:存活對象(可達性分析可達)不會被回收;死亡對象(不可達但未回收)佔用空間直到 GC 清理
  • 永久代/元空間:存儲類元數據。滿載時觸發 Full GC (Major GC)

參考:運行時數據區詳解

31. 串行收集器 vs 吞吐量收集器

  • 串行收集器:單線程,適合小應用(~100MB 內存)
  • 吞吐量收集器:並行新生代收集,面向中大型應用

參考:垃圾收集器對比

32. 永久代垃圾回收機制

永久代滿或達臨界值觸發 Full GC。注意:JDK 8 起永久代被元空間替換,機制有所不同。

33. 兩大異常類型:受檢查 vs 非受檢查

類型代表處理要求傳播行為
受檢查異常IOException, SQLException強制 throws 聲明或 try-catch 捕獲不會自動傳播
非受檢查異常RuntimeException, Error無需聲明,可選捕獲自動向上傳播

34. Exception 與 Error 的區別

  • 同為 Throwable 子類
  • Exception:應用層可預期、可處理的異常情況
  • Error:系統級嚴重問題(如 OutOfMemoryError),不建議應用捕獲

35. throw vs throws

  • throw:方法體內顯式拋出異常實例
  • throws:方法簽名聲明可能拋出的異常類型,多個用逗號分隔

36. finally 塊 vs finalize() 方法

  • finally:無論是否拋出異常均執行,用於資源釋放(關流、解鎖等)
  • finalize():Object 的 protected 方法,GC 前由 JVM 調用,用途極窄

延伸閱讀:GC 詳細機制 | GC 觸發條件分析

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved