JVM探索-2.G1垃圾回收器

时间:2022-10-27 15:59     作者:林立     分类:


  G1垃圾回收器为什么名字叫作Garbage First呢?G1是一个并行回收器,它将堆内存分割为许多不相关的区间,每个区间可以术语老年代或者年轻代,并且每个年龄代区间可以是物理上不连续的。老年代区间这个设计理念本就是为了服务于并行后台线程,这些线程的主要工作就是寻找未被引用的对象(未被引用的对象即可被回收),而这样就会产生一种现象,即某些区间的垃圾多于其它区间。垃圾回收时需要暂停应用程序,不然无法防止应用程序干扰,G1 GC可以集中精力在垃圾最多的区间上,并且只花费极少部分时间即可清空这些区间的垃圾,腾出完全空闲的区间,所以G1的名字由来就是:垃圾优先(Garbage First)。
  G1 内部主要有四个操作阶段,即:

  •   年轻代回收(A Young Collection)
  •   运行在后代的并行循环(A Background,Concurrent Cycle)
  •   混合回收(A Mixed Collection)
  •   全量回收(Full GC)