我有一個關於GC根的問題。我讀到GC的根源是「Live thread」。那是什麼意思? 我總是有印象,每個線程都有它自己的堆棧,堆棧的局部變量是線程的GC根,現在我很困惑。線程表示具有哪些其他類型的對象引用,它們不在幀堆棧或本地堆棧上?作爲GC根的線程
其他問題是年輕一代收集使用GC根,還是隻爲主要算法?
感謝
更新: 好難過,所以要保持它的簡單:我讀過這篇短文:yourkit.com/docs/java/help/gc_roots.jsp,有一個「主題」選項, GC根,究竟是什麼意思,該線程是GC根?什麼樣的對象被Thread GC根引用,它沒有被堆棧引用?爲什麼這兩個類別不同?
你的問題很混亂。 1)當然,只有活動的線程纔算GC根源。 2)什麼是「線索表示」? 3)靜態變量是非堆棧GC根。 4)每個GC變體都考慮了GC根源;它不可能*不*考慮到它們。 – 2014-10-07 09:36:13
對不起,爲了保持簡單:我讀過這篇簡短的文章:http://www.yourkit.com/docs/java/help/gc_roots.jsp,並且有一個「Thread」選項作爲GC根,究竟是什麼這是否意味着該線程是GC根?什麼樣的對象被Thread GC根引用,它沒有被堆棧引用?爲什麼這兩個類別不同? – alobodzk 2014-10-07 09:57:05
@MarkoTopolnik我不認爲靜態變量是根,否則類加載器將永遠不會卸載。 – 2014-10-07 09:59:03