[JAVA修炼之路七]-JVM 垃圾回收器

一、各种回收器特点

1、新生代串行回收器

a、运行过程中,应用中所有线程停止工作(STW)

b、Client 模式下,默认收集器

c、分代复制算法

d、垃圾回收图

2、老年代串行回收器

a、启动方式:-XX:+UseSerialGC、-XX:+UseParNewGC、-XX:+UseParalllelGC

b、标记压缩算法、运行过程中,应用中所有线程停止工作(STW)

c、垃圾回收图

3、并行回收器

a、启动方式:-XX:+UseParNewGC、-XX:+UseConcMarkSweepGC

b、分代复制算法、运行过程中,应用中所有线程停止工作(STW)

c、指定并行线程数量 -XX:ParallelGCThreads,最好与CPU数量一致,避免过多线程数,影响垃圾回收性能。默认状况下,CPU小于8,采用CPU数量,如果大于8等于3+((5*CPU_Count)/8)

d、垃圾回收图

4、新生代ParallelGC回收器

a、启动方式:-XX:+UseParalllelGC、-XX:+UseParalllelOldGC

b、分代复制算法、运行过程中,应用中所有线程停止工作(STW)

c、非常关注系统的吞吐量

d、-XX:MaxGCPauseMills 设置最大垃圾收集停顿时间。如果设置的太小,它会灵活调整堆的大小,使时间在范围之内,但是有可能造成频繁的GC,从而增加了垃圾回收的总时间,影响吞吐率

e、-XX:GCTimeRatio 设置吞吐量大小。如果为19(默认值),将不会花费1/(1+19)=5%的时间用于垃圾收集

f、-XX:+UseAdaptiveSizePolicy 打开自适应GC策略,这种情况晋升老年代对象年龄、堆大小、吞吐量和停顿时间自动调整

5、老年代ParallelOldGC回收器

a、启动方式 -XX:+UseParalllelOldGC

b、标记压缩算法、运行过程中,应用中所有线程停止工作(STW)

c、-XX:ParallelGCThreads与并行回收器原理一样

6、CMS回收器

a、启动方式 -XX:+UseConcMarkSweepGC

b、标记清除算法

c、收集过程

•初始标记,标记根对象(STW)、
•并发标记,标记引用对象
•预清理,清理前准备以及控制停顿时间
•重新标记,修正并发标记数据(STW)
•并发清理
•并发重置

d、CMS 垃圾回收时刻

•达到阈值(默认68%)
•空间不足(标记清理碎片)
e、CMS调优
•-XX:CMSInitatingOccupancyFraction
•内存增长很快,调大参数,减少频繁CMS;反之调小。目的减少回收的次数
•回收过程中、出现串行,调小参数或添加碎片整理
•-XX:UseCMSCompactAtFullCollection&-XX:CMSFullGCsBeforeCompaction
•第一个默认CMS之后进行整理
•第二个设置几次CMS之后进行整理
•-XX:ConGCThreads 或-XX:ParallelCMSThreads
•设置并发回收的线程数
•默认(ParallelGCThreads+3)/4
f、注意:
•CMS过程中产生的垃圾不进行回收
•出现Concurrent mode failure ,表示该进行优化了
二、回收器的组合

三、回收器所采用算法

四、各种参数

•1、新生代对象晋升到老年代
•-XX:MaxTenuringThreshold
•新生代对象最大年龄,默认15,15次GC回收之后到老年代。充分非必要条件
•-XX:TargetSurvivorRatio=15
•Survivor默认50%,年龄将按照最小年龄,所以会全部回收到老年代
•大对象大于新生代内存时直接到老年代
•PretenureSizeThreshold
•针对parNew与串行回收器使用,默认为0不起作用
•-XX:-UseTLAB 在tlab上分配以后,上面这个作用会受影响
•2、-XX:+PrintHeapAtGC
•打印堆信息
•3、-XX:-ScavengeBeforeFullGC
•Fullgc 之前执行一次新生代回收。默认为true,System.gc();
•4、-XX:SurvivorRaio
•Eden、suivivor比例
•5、-XX:HeapDumpOnOutMemoryError

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值