細節方面不同
G1 在壓縮空間方面有優勢。
G1 通過將內存空間分成區域(Region)的方式避免內存碎片問題。
Eden, Survivor, Old 區不再固定、在內存使用效率上來說更靈活。
G1 可以通過設置預期停頓時間(Pause Time)來控制垃圾收集時間避免應用雪崩現象。
G1 在回收內存后會馬上同時做合並空閑內存的工作、而 CMS 默認是在 STW(stop the world)的時候做。
G1 會在 Young GC 中使用、而 CMS 只能在 O 區使用。
整體內容不同
吞吐量優先:G1
響應優先:CMS
CMS 的缺點是對 cpu 的要求比較高。G1 是將內存化成了多塊,所有對內段的大小有很大的要求。
CMS 是清除,所以會存在很多的內存碎片。G1 是整理,所以碎片空間較小。
本文由猿必過 YBG 發布