Java虛擬機-04 垃圾回收算法

回收算法

  • 標記-清除,先標記在清理。問題:1、效率低,標記清除效率不高;2、空間問題,產生大量不連續的碎片
  • 複製算法:將內存劃分為2塊,一塊用完,把存貨對象複製到另外一塊。特點:順序分配內存,實現簡單,效率高;但是空間利用率低,常用於新生代對象回收
  • 標記-整理:與標記-清除不同之處,不是直接清理,而是將存貨對象移到一端,直接清理邊界之外的內存空間

算法實現

  1. 通過OopMap數據結構記錄對象引用
  2. 到達安全點safe point後,開始為指令生產OopMap;safe point有:方法調用,循環跳轉,異常跳轉
  3. GC中斷線程,發現有線程不在安全點,恢復線程,讓它跑到安全點

安全區域safe region

處於Sleep或者blocked的線程處於

安全區域,因為引用關係不會變更;線程離開safe region,會先判斷是否完成GC過程


分享到:


相關文章: