G1收集器(Garbage First)是Java虛擬機中垃圾收集器的一種。
G1收集器是Java虛擬機的垃圾收集器理論進一步發展的產物,它與前面的CMS收集器相比有兩個顯著的改進:一是G1收集器是基於「標記-整理」算法實現的收集器,也就是說它不會產生空間碎片,這對於長時間運行的應用系統來講很是重要。二是它能夠很是精確地控制停頓,既能讓使用者明確指定在一個長度爲M毫秒的時間片斷內,消耗在垃圾收集上的時間不得超過N毫秒,具有了一些實時Java(RTSJ)的垃圾收集器的特徵。
G1收集器能夠實如今基本不犧牲吞吐量的前提下完成低停頓的內存回收,這是因爲它可以極力地避免全區域的垃圾收集,以前的收集器進行收集的範圍都是整個新生代或老年代,而G1將整個Java堆(包括新生代、老年代)劃分爲多個大小固定的獨立區域(Region),而且跟蹤這些區域裏面的垃圾堆積程度,在後臺維護一個優先列表,每次根據容許的收集時間,優先回收垃圾最多的區域(這就是Garbage First名稱的來由)。區域劃分及有優先級的區域回收,保證了G1收集器在有限的時間內能夠得到最高的收集效率。
G1收集器已在JDK 1.7 u4版本正式投入使用。