@lanling_ 這就是最后一個例子重點說明的哈胯究,首先要明白一個概念适滓,只要一個對象的父對象或者祖父對象是灰色的晌缘,這個對象就是安全的。
1. 如果一個棧被標位黑色的(曾經有過一個瞬間棧對象所指向的子對象都被標位灰色了)戒祠,那么就算后面這個棧的棧對象指向別的白色對象a虹菲,這個白色對象a之前肯定有一個父節(jié)點或者祖父節(jié)點b是灰色的寿酌,所以b 會保護 a,如果當那個b刪除引用的時候, shade(*slot)會把子對象c或者a變?yōu)榛疑槠唬@樣a就是灰色或者被c保護了
2. 如果這個棧還是灰色的(里面仍有棧對象是灰色的)岸更。
2.1 白色對象被灰色棧對象指向,就直接是安全的膊升。
2.2 白色對象a被棧中的黑色對象指向怎炊,因為棧對象只有在所有指向的對象都是灰色后才會標黑,所以這種情況的出現只能是在標黑之后進行指向的操作廓译,那么肯定有一個別的非黑色對象b也指向這個白色對象a评肆,這個非黑色的對象b是灰色的,那么就能直接保護a非区,如果其是白色的瓜挽,那么其肯定被一個灰色的父或者祖父灰色節(jié)點c所保護,同樣c也會保護a征绸。
golang 1.8 gc的演進在java的gc中久橙,主要有三種算法,即:標記-刪除管怠,標記-整理淆衷,復制,網上有很多資料介紹相關內容排惨,其中標記主要是為了找到內存中不可達的對象吭敢,并將其回收。而gc過程中最關鍵的指...