GCRoot
判斷標(biāo)準(zhǔn)是否被棧、本地方法棧、方法區(qū)靜態(tài)變量、常量直接或者間接引用。

AF6AC525E276271A16ED73410169E908.png
1.標(biāo)記清除:會產(chǎn)生內(nèi)存碎片
2.標(biāo)記整理:代價太大
3.復(fù)制算法:需要兩倍的內(nèi)存

EBFC3711B292E21D4A37B34D341F13A3.png
堆內(nèi)存分為Young區(qū)和Old區(qū)
Young區(qū)分為Eden區(qū)、幸存區(qū)S0、幸存區(qū)S1 8:1:1
使用的是復(fù)制算法
From To 區(qū)都會反復(fù)交替使用。
每一次Young GC存活下來的年齡都會加1 (4bite)
如果達(dá)到15,就會進(jìn)入Old區(qū)
大對象直接進(jìn)入Old區(qū)
如果老年區(qū)滿了就會觸發(fā)Full GC 引發(fā)stop the world java程序會暫停。
Full GC 會使用的1/2標(biāo)記整理或標(biāo)記清除。