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

回收算法

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

算法實現

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

安全區域safe region

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