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

Java 易錯點精講(二):sleep/wait、異常體系、JVM 內存模型、GC、HashMap 底層結構

     編輯:Java 綜合教學

Java 易錯點精講(二):sleep/wait、異常體系、JVM 內存模型、GC、HashMap 底層結構

1. sleep() vs wait()

維度Thread.sleep()Object.wait()
所屬類ThreadObject
鎖行為不釋放 對象鎖釋放 對象鎖,進入等待池
喚醒方式時間到自動恢復需 notify()/notifyAll() 喚醒
調用前提無必須在 synchronized 塊/方法中

2. notify() / notifyAll() 後狀態

線程進入就緒狀態,而非直接運行,需搶佔 CPU 時間片。

3. 異常體系速記

  • Throwable
    • Error:JVM 級嚴重錯誤(OOM、StackOverflow),不可捕獲處理,交給 JVM。
    • Exception
      • RuntimeException (Unchecked):編程 Bug(NPE、IndexOutOfBounds),可不 try-catch。
      • Checked Exception:外部資源風險(IOException、SQLException),強制 try-catch 或 throws。

4. JVM 線程內存交互

線程讀取堆中對象 → 複製到線程本地內存(工作內存) → 修改副本 → 某時刻(退出前)寫回堆。
這是 volatile / synchronized 解決可見性的根本原因。

5. GC 核心點

  • 系統級守護線程,不可強制執行,System.gc() 僅建議。
  • 引用置 null 後,對象可能被回收,時間不可知。

6. HashMap (JDK 7) 底層結構

  • 數組 + 鏈表(拉鏈法)。
  • Entry 內部類封裝 key-value,僅根據 key 計算 hash 決定槽位,value 不參與。
  • 非開放地址法。

7. 常見工具辨析

  • java.exe:JVM 啟動器。
  • javadoc.exe:生成 API 文檔。
  • jdb.exe:命令行調試器。
  • javaprof.exe:性能剖析工具。
  • JAR:歸檔格式;EAR:企業級 JAR(含多模組)。
  • appletviewer:運行 Applet 的輕量容器(已淘汰)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved