2018/10/12

JVM 效能調教 (三) - 各類GC方法


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

沒有留言:

張貼留言

test2