2017-05-25 40 views

回答

0

的博客文章Understanding CMS GC Logs提到的(非可中止)預清洗階段的目的:

預清潔也是一個同步階段。在這個階段,我們看看CMS堆中的對象,這些對象通過年輕一代或新分配的升級進行更新,或者在我們在前一個併發標記階段進行併發標記時由增變器更新。通過同時重新掃描這些對象,預清理階段有助於減少下一站世界「備註」階段的工作。

因此,這個階段是一個優化。

將終止執行預洗,然後描述爲

「後併發預洗」如果伊甸園佔有率高於CMSScheduleRemarkEdenSizeThreshold,我們開始「同時終止執行預洗」,並繼續precleanig,直到我們有在伊甸園CMSScheduleRemarkEdenPenetration百分比佔用,否則我們立即安排'備註'階段。

另一篇文章The Unspoken - CMS and PrintGCDetails進一步提到:

這句話階段計劃,以便它不會發生背到背部採用了ParNew以免顯得暫停是總和ParNew和評論暫停。第二個預清理階段開始,並在備註階段準備開始時中止。中止這個第二個預清理階段是預期的行爲。它被中止不是一個錯誤的跡象。由於評論階段正在等待,爲什麼不進行預清理,但爲了預清理而不拖延評論。

換句話說,可中止預清理是一種優化(預清理優化),以便在年輕集合之間留出標記停頓並以有用的方式花費該等待時間。

相關問題