1.7 GC執行機制的分類

    1. GC執行機制的分類
      1. 次收集器

Scavenge GC(Minor GC),指發生在新生代的GC,由於新生代的Java對象大多都是朝生夕死,因此Scavenge GC很是頻繁,通常回收速度也比較快。當Eden空間不足覺得對象分配內存時,會觸發Scavenge GC。算法

通常狀況下,當新對象生成,而且在Eden申請空間失敗時,就會觸發Scavenge GC,對Eden區域進行GC,清除非存活對象,而且把尚且存活的對象移動到Survivor區。而後整理Survivor的兩個區。這種方式的GC是對年輕代的Eden區進行,不會影響到年老代。由於大部分對象都是從Eden區開始的,同時Eden區不會分配的很大,因此Eden區的GC會頻繁進行。於是,通常在這裏須要使用速度快、效率高的算法,使Eden去能儘快空閒出來。對象

當年輕代堆空間緊張時會被觸發內存

相對於全收集而言,收集間隔較短效率

      1. 全收集器

Full GC,指發生在老年代的GC,出現了Full GC通常會伴隨着至少一次的Minor GC(老年代的對象大部分是Scavenge GC過程當中重新生代進入老年代),好比:分配擔保失敗。Full GC的速度通常會比Scavenge GC慢10倍以上。當老年代內存不足或者顯式調用System.gc()方法時,會觸發Full GC。gc

當老年代或者持久代堆空間滿了,會觸發全收集操做方法

能夠使用System.gc()方法來顯式的啓動全收集移動

全收集通常根據堆大小的不一樣,須要的時間不盡相同,但通常會比較長。時間

相關文章
相關標籤/搜索