之前看到群里有一個同學說:在分析CMS垃圾回收時,如果扯到forground gc,都是不靠譜的,其實就是msc,這種搞不明白的名詞,容易誤導人。
他得出這個結論,主要是看到別人的一篇關于CMS的分析,但我實在不敢茍同。
首先forground gc這個名詞并非隨便說說的,而是HotSpot中對應算法的實現方法名,與它對應的有backgroud gc,即CMS GC時經常發生的邏輯。
forground gc 等于 msc(mark swap compact)?
顯然不是,msc是一個帶壓縮的算法,而foreground gc不會壓縮即不會整理碎片,其實現有點類似backgroud gc,兩個算法的不同之處是:backgroud是部分STW的,而forground是完全STW,且沒有預清理階段。當然了,兩者的觸發條件也不同。
更多關于CMS算法分析:傳送門
網絡上關于CMS算法相關分析的文章實在是太多,以至于有些同學看到一篇文章所寫的,以為都是對的,對于JVM方面分析的文章,最最權威的還是R大和笨神的文章,至于其它的野文章,可以參考,但需要持有懷疑的態度去看(包括我的),但我保證今天寫的肯定沒問題。