互联网网站建设 选择题,网站下载图标,成都保洁公司,设计网站的三个要素serial serial old ParNew CMS parallel scavanbe parallel old g1
串行收集器组合 Serial Serial Old 开启选项#xff1a;-XX:SerialGC 串行收集器是最基本、发展时间最长、久经考验的垃圾收集器#xff0c;也是client模式下的默认收集器配置。 串行收集器采用单线程stop…serial serial old ParNew CMS parallel scavanbe parallel old g1
串行收集器组合 Serial Serial Old 开启选项-XX:SerialGC 串行收集器是最基本、发展时间最长、久经考验的垃圾收集器也是client模式下的默认收集器配置。 串行收集器采用单线程stop-the-world的方式进行收集。当内存不足时串行GC设置停顿标识待所有线程都进入安全点(Safepoint)时应用线程暂停串行GC开始工作采用单线程方式回收空间并整理内存。单线程也意味着复杂度更低、占用内存更少但同时也意味着不能有效利用多核优势。事实上串行收集器特别适合堆内存不高、单核甚至双核CPU的场合。
并行收集器
并行收集器组合 Parallel Scavenge Parallel Old 开启选项-XX:UseParallelGC或-XX:UseParallelOldGC(可互相激活) 并行收集器是以关注吞吐量为目标的垃圾收集器也是server模式下的默认收集器配置对吞吐量的关注主要体现在年轻代Parallel Scavenge收集器上。 并行收集器与串行收集器工作模式相似都是stop-the-world方式只是暂停时并行地进行垃圾收集。年轻代采用复制算法老年代采用标记-整理在回收的同时还会对内存进行压缩。关注吞吐量主要指年轻代的Parallel Scavenge收集器通过两个目标参数-XX:MaxGCPauseMills和-XX:GCTimeRatio调整新生代空间大小来降低GC触发的频率。并行收集器适合对吞吐量要求远远高于延迟要求的场景并且在满足最差延时的情况下并行收集器将提供最佳的吞吐量。
并发标记清除收集器(CMS)
并发标记清除收集器组合 ParNew CMS Serial Old 开启选项-XX:UseConcMarkSweepGC ## 注意: 这个选项默认 采用ParNew CMS SerialOld 组合。 CMS收集器以低延迟为关注点。开启后年轻代采用STW的并行收集老年代采用CMS进行垃圾回收对低延迟的作用主要就是老年代。
CMS标记的四个阶段
初始标记(STW)标记所有的根对象并发标记标记根对象的可达路径重新标记(STW)标记那些可能在并发标记阶段被用户线程有修改的可达对象并发清除清除垃圾对象
年轻代ParNew与并行收集器类似而老年代CMS每个收集周期都要经历初始标记、并发标记、重新标记、并发清除。其中初始标记以STW的方式标记所有的根对象并发标记则同应用线程一起并行标记出根对象的可达路径在进行垃圾回收前CMS再以一个STW进行重新标记标记那些由mutator线程(指引起数据变化的线程即应用线程)修改而可能错过的可达对象最后得到的不可达对象将在并发清除阶段进行回收。值得注意的是初始标记和重新标记都已优化为多线程执行。CMS非常适合堆内存大、CPU核数多的服务器端应用也是G1出现之前大型应用的首选收集器。
但是CMS并不完美它有以下缺点
由于并发进行CMS在收集与应用线程会同时会增加对堆内存的占用也就是说CMS必须要在老年代堆内存用尽之前完成垃圾回收否则CMS回收失败时将触发担保机制串行老年代收集器将会以STW的方式进行一次GC从而造成较大停顿时间标记清除算法无法整理空间碎片老年代空间会随着应用时长被逐步耗尽最后将不得不通过担保机制对堆内存进行压缩。CMS也提供了参数-XX:CMSFullGCsBeForeCompaction(默认0即每次都进行内存整理)来指定多少次CMS收集之后进行一次压缩的Full GC。