JVM垃圾回收总结


一、垃圾回收的算法

 

  1、引用记数法 记录对像的引用数量
  2、标记-清除算法 会产生空间碎片
  3、复制算法 需要使用两块大小相同的内存,应用于新生代
  4、标记压缩算法 将所有存活对像压缩到内存的一端,再清理边界外所有空间,应用于老年代

 

二、垃圾回收的类型

 

  1、新生代串行收集器 特点:独占、单线程、串行,复制算法
  2、老年代串行收集器 特点:独占、单线程、串行,标记-压缩算法

  3、新生代并行收集器 特点:独占、多线程、并行,复制算法,关注系统吞吐量 
  4、老年代并行收集器 特点:独占、多线程、并行,标记-压缩算法,关注系统吞吐量 

  5、CMS(并发标记清除)收集器   特点:非独占、多线程,标记-清除算法

    工作步骤:初始标记(独占)、并发标记、重新标记(独占)、并发清理、并发重置

    CMS收集器执行过程中,出现内存不足会导致回收失败,这时JVM会启动老年代串行收集器回收
  

三、垃圾回收调优参数

 

  1、串行GC调优参数

    -XX:+UseSerialGC:新生代和老年代使用串行收集器
    -XX:SurvivorRatio:设置eden区和survivor区大小的比例
    -XX:PretenureSizeThreshold:设置大对像直接进入老年代的对像大小阈值
    -XX:MaxTenuringThreshold:设置对像进行老年代的年龄阈值

  2、并行GC调优参数
  
    -XX:+UseParNewGC:新生代使用并行收集器
    -XX:+UseParallelOldGC:老年代使用并行收集器
    -XX:ParallelGCThreads:设置用于垃圾回收的线程数,通常和CPU数量相等
    -XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间
    -XX:GCTimeRatio:设置吞吐量的大小,是一个0~100的整数
    -XX:+UseAdaptivesSizePolicy:打开GC自适应策略


  3、CMS调优参数
  
    -XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
    -XX:ParallelCMSThreads:设置用于CMS垃圾回收的线程数
    -XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发,默认为68%
    -XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾回收后是否要进行一次内存碎片整理
    -XX:CMSFullGCsBeforeCompaction:设置进行多少次CMS垃圾回收后,进行一次内存压缩
    -XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
    -XX:+CMSParallelRemarkEnabled:启用并重新标记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值