几种垃圾收集器(7中)


第一种:serial(串行,新生代收集器):单线程收集器,执行时它会停掉所有其他的线程,直到它收集结束;在用户不可见的情况先将用户所有的线程停掉,是很难接受(新生代收集器的选择,后面还会介绍serial old 专用老年代的收集器,采用标记整理的算法)

第二种:ParNew收集器(新生代收集器)其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数(例如:-XX:SurvivorRatio、 -XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器完全一样;它是许多运行在server模式下的虚拟机中首选的新生代收集器,它是为一个可以和cms收集器配合使用

parnew收集器和serial的比较:



parallel Scanvenge收集器(新生代收集器):采用复制算法的并行的多线程收集器,它的目的是达到一个可控制的吞吐量(throughtput)t吞吐量就是java虚拟机用于运行用户代码的时间与cpu运行总时间的比值


Serial old 收集器:是serial收集器的老年代版本,它同样是一个单线程收集器,采用标记-整理的算法,这个收集器的主要意义也是被客户端模式的虚拟机使用;

他可以与parallel scavenge新生代收集器收搭配使用,     


parallel old (老年代收集器)使用多线程和“标记整理”算法,可以和parallel scavenge 新生代收集器组合使用,



cms收集器:是基于“标记-清除”算法实现的,整个过程分为四个步骤,包括:

初始标记(cms initial mark)

并发标记(cms) concurrent mark

重新标记(cms remark)

并发清除(cms concurrent sweep)



i

缺点:cms收集器无法处理浮动垃圾,因为他在并发标记时,用户线程还在运行着,

缺点二:基于标记清除算法 会产生内存碎片,会很快引起第二次垃圾回收

G1收集器:是单签收集器技术发展的最前沿成果,与cms收集器相比有明显的改进

第一:基于标记整理算法实现的收集器,

第二,非常精确的控制停顿
 G1将整个java堆(包括新生代,老年代,)划分为多个大小固定的独立区域(region)

并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域,区域划分,及有优先级的区域回收

保证了G1收集器在有限的时间内可以获得最高的收集效率

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值