gc機制

gc機制

  1. 引用計數法
  2. 三色標記法

目標是爲了縮短STW(stop the world)時間,提高程序時序性。

引用計數法基本原理

內存小於32kb

有使用引用時 計數+1
釋放、置nil計數-1
當引用計數0時,垃圾回收工作。回收內存

三色標記法基本原理

內存大於32kb

  1. 掃描與標記階段
起初所有對象都是白色
掃描找出所有可達對象,標記爲灰色,放入待處理隊列
從隊列提取灰色對象,將其所有引用對象標記爲灰色放入隊列,自身標記爲黑色
直到所有灰色變成黑色。
寫屏障監視對象內存的修改,重新標色。
  1. 清理階段
此時只剩下白色和黑色對象,將白色對象的內存收回。將所有黑色對象變爲白色對象,完畢。

注意點

寫屏障

gc運行的過程中,可以監控內存中對象的修改,並對對象進行重新標記

對象

白色:待清理對象
灰色:標記的中間狀態,是可達的
黑色:活躍對象,其引用對象都是灰色或黑色
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章