回收算法
- 標記-清除,先標記在清理。問題:1、效率低,標記清除效率不高;2、空間問題,產生大量不連續的碎片
- 複製算法:將內存劃分為2塊,一塊用完,把存貨對象複製到另外一塊。特點:順序分配內存,實現簡單,效率高;但是空間利用率低,常用於新生代對象回收
- 標記-整理:與標記-清除不同之處,不是直接清理,而是將存貨對象移到一端,直接清理邊界之外的內存空間
算法實現
- 通過OopMap數據結構記錄對象引用
- 到達安全點safe point後,開始為指令生產OopMap;safe point有:方法調用,循環跳轉,異常跳轉
- GC中斷線程,發現有線程不在安全點,恢復線程,讓它跑到安全點
安全區域safe region
處於Sleep或者blocked的線程處於
安全區域,因為引用關係不會變更;線程離開safe region,會先判斷是否完成GC過程閱讀更多 IT學習分享 的文章