在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ JAVA: CMS垃圾回收中的“浮動垃圾”的理解?

JAVA: CMS垃圾回收中的“浮動垃圾”的理解?

書上說:并發(fā)清理階段用戶線程還在運行,這段時間就可能產(chǎn)生新的垃圾,新的垃圾在此次GC無法清除,只能等到下次清理。這些垃圾有個專業(yè)名詞:浮動垃圾。

這個浮動垃圾如何理解?難道不是在本次GC重新標記remark的過程中被發(fā)現(xiàn)然后清理嗎?為何還要等下次GC才能清理?

回答
編輯回答
舊顏

重新標記(Remark) 的作用在于:
之前在并發(fā)標記時,因為是 GC 和用戶程序是并發(fā)執(zhí)行的,可能導致一部分已經(jīng)標記為 從 GC Roots 不可達 的對象,因為用戶程序的(并發(fā))運行,又可達 了,Remark 的作用就是將這部分對象又標記為 可達對象


至于 “浮動垃圾”,因為 CMS并發(fā)標記 時是并發(fā)的,GC 線程和用戶線程并發(fā)執(zhí)行,這個過程當然可能會因為線程的交替執(zhí)行而導致新產(chǎn)生的垃圾(即浮動垃圾)沒有被標記到;而 重新標記 的作用只是修改之前 并發(fā)標記 所獲得的不可達對象,所以是沒有辦法處理 “浮動垃圾” 的。

2017年7月9日 14:58
編輯回答
網(wǎng)妓

remark過程標記活著的對象,從GCRoot的可達性判斷對象活著,但無法標記“死亡”的對象。
如果在初始標記階段被標記為活著,并發(fā)運行過程中“死亡”,remark過程無法糾正,因此變?yōu)楦永璧却麓蝕c的到來。

2017年7月9日 04:27
編輯回答
情皺

謝邀。僅僅說說自己的理解:

  • 如果浮動垃圾不停的產(chǎn)生,那么是不是一直不GC,一直做remark了..這樣會造成OOM的。
2018年3月15日 05:24