jvmJVM垃圾回收总结


博客分类: java 虚拟机性能优化
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:启用并重新标记

猜你喜欢

转载自u011820505.iteye.com/blog/2257801