标签:
Serial 收集器
Serial 是一个新生代收集器 ;单线程垃圾回收器,采用复制算法
-XX:+UseSerialGC
ParNew 收集器
ParNew 是一个新生代收集器;ParNew收集器其实是Serial收集器的多线程版本,其余行为包括Serial收集器可用的所有控制参数、收集算法、stop the world、对象分配规则,回收策略等都与Serial收集器完全一样;
控制参数有如下:
-XX:+UseParNewGC
-XX:SurvivorRatio //新生代中Edge区域Survivor区的容量比值,默认为8,代表 Edge:Survivor = 8:1
-XX:PretenureSizeThreshold //直接晋升到老年代对象的大小,设置这个参数数大于这个参数的对象直接在老年代分配
-XX:HandlePromotionFailure //是否允许新生代收集担保,进行一次minor GC后,另一块Survivor空间不足时,将直接会在老年代中保留
-XX:ParallelGCThreads //设置并行GC进行回收时,并行线程数
Parallel Scavenge 收集器
Parallel Scavenge 是一个新生代收集器,也是使用复制算法的收集器,从名字上看 Parallel Scavenge收集器,与ParNew收集器一样,都是并行收集,并且都采用复制算法,但是Parallel Scavenge收集器与CMS等其它收集器不同,CMS等收集器关注的点是尽量缩短垃圾回收时用户线程停顿的时间,而Parallel Scavenge收集器目标则是达到一个可控的吞吐量(Throughput)。所谓吞吐量就是CPU用户运行用户代码的时间与CPU总耗时间的比值。
停顿时间短就适合人机交互程序,而高吞吐量可以高效的利用CPU时间,尽可能快的完成用户任务,适合后台预算而不需要太多交互的的任务。
Parallel Scanvenge 手机器两个参数可以精准的控制吞吐量:
-XX:MaxGCPauseMillis //最大垃圾回收停顿时间 大于0的毫秒数,收集器尽可能的保证内存回收花费的值不超过该设定
-XX:GCTimeRatio //设置大于0小于100的整数,垃圾回收时间占总时间的比率,如果把该值设为19 允许GC时间占总时间的5% 1/(1+19),默认值为 99 ,就是允许最大1%
-XX:+UseAdaptiveSizePolicy //打开开关不用指定新生代老年代大小等参数,收集器会动态指定空间大小
Serial Old 收集器
Serial Old 是Serial收集器的老年代版本,他同样是一个单线程收集器,使用“标记-整理”算法;
Parallel Old 收集器
Parallel Old收集器 是Parallel Scavenge 收集器的老年代版本,使用多线程和“标记-整理”算法,Parallel Old收集算法是在jdk 1.6之后的版本才提供的,在此之前Parallel Scavenge 收集器地位比较尴尬,因为如果新生代选择了 Parallel Scanvenge收集器,老年代除了Serial Old(PS MarkSweep)收集器别无选择;由于老年代在Serial Old收集器在服务器性能上拖累,使用Parallel Scanvenge收集器整体上也未必能达到吞吐量最优;知道Parallel Old收集器出现后,“吞吐量优先”收集器终于有了比较名副其实的应用组合,在注重CPU吞吐量的应用场合,都可以优先考虑Parallel Scanvenge 加Parallel Old 收集器;
CMS 收集器
CMS(Concurrent Mark Sweep) 收集器是一种以获得最短回收停顿时间为目标的收集器。目前很大一部分的java应用集中在互联网站或者B/S系统的服务端,这类应用尤其重视相应速度;
从名字Mark Sweeps上可以看出CMS收集器是基于“标记-清理”算法实现的,他的运作过程先对与其他几种收集器来说相对复杂,整个过程分为四步:
1)初始标记(CMS inital mark) stop the world 标记GC Roots直接关联到的对象
2)并发标记(CMS concurrent mark) GC Roots tracing
3)重新标记(CMS remark) stop the world 修正2)步骤与用户线程冲突的部分
4)并发清除(CMS cuncurent sweep)清除不可达对象
CMS 收集器启动时的回收线程默认是(cpu数量+1)/4 并发垃圾手机线程不少于 25%的CPU资源
G1 收集器
G1(Garbage-First)收集器是当今收集器技术发展的最前沿成果之一;G1的使命的替换掉CMS收集器
G1特点:
1)并行与并发
2)分代收集
3)空间整合
4)可预测的停顿
G1收集器工作的顺序与CMS收集器顺序非常相似,两者主要差别在于内存划分模型,以及回收算法
标签:
原文地址:http://www.cnblogs.com/huixw/p/4970483.html