1.Serial收集器一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束.特点:CPU利用率最高,停顿时间即用户等待时间比较长.适用场景:小型应用通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器. 2.Parallel收集器采用多线程来通过扫描并压缩堆特点:停顿时间短,回收效率高,对吞吐量要求高.适用场景:大型应用,科学计算,大规模数据采集等.通过JVM参数 XX:+USeParNewGC 打开并发标记扫描垃圾回收器. 3.CMS收集器采用“标记…
转 https://blog.csdn.net/u013812939/article/details/48782343 1.Serial收集器 一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束.特点:CPU利用率最高,停顿时间即用户等待时间比较长.适用场景:小型应用通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器. 2.Parallel收集器 采用多线程来通过扫描并压缩堆特点:停顿时间短,回收效率高,对吞吐量要求高.适用场景:大型应用,科学计算…
1.回顾CMS 1.1堆内存结构 1.2新生代GC 1.3老年代GC 2.G1收集器 2.1G1实现概览及使用场景 G1的推荐使用场景 2.2GC 2.2.1新生代GC 2.2.2老年代GC 老年代GC总结 2.2.3 其他 2.4 最佳实践 2.4.1 JVM参数 基本参数设置 关键参数设置 3.参考资料 1.回顾CMS 1.1堆内存结构 新生代分为Eden区和两个survivor区.老年代是一块连续区域. 只有FullGC时才可能发生内存整理. 1.2新生代GC 新生代淡绿色,老年代蓝色.系…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt378 这里介绍4个垃圾收集器,如果进行了错误的选择将会大大的影响程序的性能. 时至今日,仍然有两个事情困扰着开发人员:垃圾收集(GC)和了解异性(程序猿的悲鸣),后者我确实不太了解,因为我被前者搞的无暇顾及怎么了解异性,特别是当知道在JAVA8中对这一区域有了很大的改进和提升还有移除了PermGen和以一些新的令人兴奋的调优. 当我们谈到垃圾回收时,我们绝大多数都知道利用它…
1.概述 Java应用启动的时候,除了配置Xms以及Xmx参数(Xmx:InitialHeapSize, Xms:MaxHeapSize),还需要选择合适的垃圾收集器. 截止Jdk1.8,共提供了7款垃圾收集器,每一款垃圾收集器都具有不同的特点.我们所需要做的就是,根据Java应用的特点已经部署环境,确定不同垃圾收集器的组合.这几款垃圾收集器之间联系如下图所示: 由上图可知,Serial,ParNew,Parallel Scavenge主要负责Young generation区域的垃圾回收,CM…
Serial Old收集器 Serial Old收集器是Serial收集器的老年代版本,它是一个单线程收集器,使用“标记-整理”算法.这个收集器的主要意义也是被Client模式下的虚拟机使用.在server模式下,它主要还有两大用途:一个是在JDK1.5及之前的版本中与Parallel Scavenge收集器搭配使用,另外一个就是作为CMS收集器的后备元,在并发收集发生 Concurrent Mode Failure的时候使用. Parallel Old收集器 Parallel Old是Para…
今天我给大家分享的是Serial收集器,垃圾收集器就是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商,不同的版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器,这里讨论的收集器基于Sun HotSpot虚拟机1.6版Update22,这个虚拟机包含的所有的收集器如图所示. 上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用.在介绍这…
G1 GC在收集暂停的过程中会回收绝大部分堆分区,唯一的例外是多级并发标记期间的清除阶段. 在清除阶段,如果G1遇到仅仅只存放了垃圾的分区,它就会立刻收集这些分区并将它们放回空闲分区列表中,因此这些分区的释放工作就不用等到下一次垃圾收集暂停时再做了. G1的垃圾收集周期有3种类型:年轻代收集周期.多级并发标记周期和混合收集周期. 另外还有一种单线程的回退暂停full GC,它是在垃圾收集遇到转移失败情况下所采取的安全保护机制. 转移失败 在一次年轻代收集的过程中,G1会暂停应用线程,并将存活对象…
首先 1.G1是包括年轻代和年老代的GC 2.CMS是年老代GC 3.二者在某些时候都需要FullGC(serial old GC)的辅助 ###CMS收集器:CMS(ConCurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,从Mark-Sweep上可以看出,CMS收集器(以下简称CMS)是基于"标记-清除"算法实现的.主要应用于B/S模式的服务端(希望系统停顿时间尽可能短,尤其重视响应时间)CMS的运作过程可以分为4个步骤 **1. 初始标记(CM…
最近在复习Java GC,因为G1比较新,JDK1.7才正式引入,比较艰难的找到一篇写的很棒的文章,粘过来mark下.总结这篇文章和其他的资料,G1可以基本稳定在0.5s到1s左右的延迟,但是并不能保证更低的比如毫秒级(金融场景,所以说涉及到钱的,对技术要求真高),号称zing可以(但是一般做到低延时,在其他方面肯定有所损耗,比如吞吐),但是没有实际去研究过这种.另外,G1也可能和CMS一样出现Full GC,如果区域不够提升的话,所以它一般用于需求更大的堆中.但G1最显著于CMS的,在于它对空…