JVM:GC機制

如果你對jvm沒有基本的瞭解,那麼你可以先了解jvm之後再參閱本人會更便於理解

建議參考文章:《一張圖看懂JVM》

垃圾回收機制(GC)

在這裏插入圖片描述
首先要知道一些概念
年輕代、老年代、Eden區、Survivor區
年輕代:由Eden區、Survivor區組成
Eden區:new 出的新對象最初都存放在這裏
Survivor區:當Eden區滿之後,MinorGc機制會清理無引用狀態的對象,並將GCRoot對象複製到Survivor區其中一個區內
GCRoot:就是指當前仍在直接引用的對象,GCRoot對象所引用的全部對象會形成一個GCRoot鏈

new對象
在這裏插入圖片描述
Eden區滿之後會通過Minor GC機制,將全部的GCRoot(GCroot的代數+1)複製到From上,其餘未被引用對象會被清楚
在這裏插入圖片描述
當下次Eden區被佔滿時,MinorGC會再次被調用,對Eden區和Survivor區內未被引用對象清除,將GCroot的代數再加1
在這裏插入圖片描述
GCroot對象會一直在survivor區之間存在,當GCroot代數達到15代之後會移動至老年代。

而當老年代滿之後,會產生OOM。即內存沾滿,進程被動停止。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章