
| 區域 | 線程共享 | 核心功能 | 配置參數 |
|---|---|---|---|
| 程序計數器 | 否 | 記錄當前執行字節碼行號 | 無 |
| 虛擬機棧 | 否 | Java 方法執行模型:局部變數表、操作數棧、動態連接、方法出口 | -Xss |
| 本地方法棧 | 否 | Native 方法執行 | -XX:NativeStackSize |
| 堆 | 是 | 物件實例分配區,GC 主戰場 | -Xms, -Xmx, -Xmn |
| 方法區 | 是 | 類資訊、常量、靜態變數、JIT 編譯代碼 | -XX:MaxPermSize (JDK7) / -XX:MaxMetaspaceSize (JDK8+) |
非 JVM 運行時區域,NIO DirectByteBuffer 分配堆外記憶體,避免堆內複製,受 -XX:MaxDirectMemorySize 限制。

-XX:SurvivorRatio(預設 8:1:1)Object o = new Object(),永不回收SoftReference,記憶體不足時回收WeakReference,下次 GC 回收PhantomReference,唯一用途:收到 GC 通知| 算法 | 原理 | 優點 | 缺點 | 適用區域 |
|---|---|---|---|---|
| 標記-清除 | 標記存活 → 清除未標記 | 實現簡單 | 記憶體碎片多 | 老年代 |
| 複製 | 劃分兩塊,存活物件複製到另一塊 | 無碎片、分配快 | 空間利用率 50% | 新生代 |
| 標記-整理 | 標記 → 存活物件向一端移動 → 清理邊界外 | 無碎片、空間利用率高 | 需移動物件、更新引用 | 老年代 |
| 分代收集 | 新生代用複製,老年代用標記-整理/清除 | 綜合效能最優 | 實現複雜 | 整個堆 |
-XX:PretenureSizeThreshold)System.gc()remove()