JVM 效能調教 (三) - 各類GC方法
- 本章介紹GC原理 , 幫助調教JVM效能
- FLOW
- 引用計數法 (Reference Counting)
- 標記清除法(Mark-Sweep)
- 複製算法 (Copying)
- 標記壓縮法 (Mark-Compact)
- 分代算法 (Generational Collecting)
- 分區算法 (Region )
- Detail
- 1a 檢查物件是否引用 , 缺點是兩物件互相引用造成垃圾無法識別
- 2a 在記憶體中,從各根節點開始出發 , 在路徑上找出未被引用的對象並清除 , 缺點是容易造成記憶體空間碎片 , 如果空間不連續工作效率較差
- 3a 將內存空間非為兩塊 , 每次只使用一塊 , GC時將存活對象複製到另一塊 , 因此沒有碎片 , 缺點是內存必須折半和存活對象不斷複製
- 4a 執行標記清除法(Mark-Sweep)後 , 重整存活之記憶體
- 5a 基於各內存空間的特性 , 採用不同的演算法
- java GC 時 , 新生代空間採用複製算法(copying) , 老年代採用標記壓縮法(Mark-Compact)或標記清除法(Mark-Sweep)
- 為了加速高GC頻率的新生代 , java使用Card Table紀錄是否被老年代引用 , 也不用掃描全部老年代空間
- 6a 將內存區域區合理切成多個小塊空間 , 控制每次GC多少個小區間 , 可減少GC所產生的停頓時間
沒有留言:
張貼留言