垃圾收集

垃圾收集算法

  1. 标记清除法:循环应用
  2. 引用计数法:空间碎片
  3. 复制算法:新生代使用该算法进行垃圾收集
  4. 标记压缩算法:老年代使用该算法进行垃圾收集
为什么新生代和老年代使用不同的算法?
老年代中的对象存活时间长,如果使用复制算法的话,每次都要复制大部分对象,效率低下。
  1. 分代算法:不同代使用不同算法
  2. 分区算法:将内存分成多个小区,每个区都能进行GC,粒度更小,提高使用率。
垃圾收集器
串行回收器

单线程

并行回收器

多线程

  1. ParNew 回收器,作用在新生代,
    -XX:+UseParNewGC,开启 ParNew
    -XX:ParallelGCThreads=nCPU 设置垃圾回收线程数
  2. ParallelGC 回收器 作用在新生代 复制算法
    -XX:MaxGCPauseMills最大垃圾收集停顿时间
    -XX:GCTimeRatio取值0-100,默认99,表示系统将花费1/(1+n)的时间进行GC
    -XX:+UseAdaptiveSizePolicy 自适应模式,此模式下,新生代大小、eden、s0/s1的比例,以及MaxTenuringThreshold会被自动调整。
  3. ParallelOldGC,作用在老年代 标记压缩法
CMS回收器

非独占式的,当到达某一阈值时开始垃圾收集,
-XX:+UseConcMarkSweepGC
-XX:ConcGCThreads

G1回收器

你可能感兴趣的:(垃圾收集)