JVM垃圾回收总结

转载 2015年11月18日 18:40:15




    博客分类: 


一、垃圾回收的算法

 

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

 

二、垃圾回收的类型

伦理片 http://www.dotdy.com/

  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调优参数

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




相关文章推荐

JVM垃圾回收算法 总结及汇总

JVM垃圾回收算法 总结及汇总 2016-03-10 16:05 46人阅读 评论(0) 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?...

JVM-GC总结-分代垃圾回收详解--第一发

为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,...

JVM调优总结(3):垃圾回收面临的问题

如何区分垃圾前面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的...

JVM调优总结(九) -新一代垃圾回收算法

垃圾回收的瓶颈     传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些...

JVM调优总结(4):分代垃圾回收

http://www.importnew.com/19255.html 为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可...

JVM调优总结(三)-基本垃圾回收算法

标记-清除(Mark-Sweep):     此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产...

JVM调优总结(四)-垃圾回收面临的问题

如何区分垃圾       上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中...

JVM调优总结(四)——垃圾回收面临的问题

如何区分垃圾       上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中...

JVM调优总结(四)---垃圾回收面临的问题

如何区分垃圾     上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,...

JVM调优总结(九)——新一代的垃圾回收算法

垃圾回收的瓶颈     传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JVM垃圾回收总结
举报原因:
原因补充:

(最多只允许输入30个字)