课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
垃圾回收机制是java程序员需要重点掌握的一个编程知识,而今天我们就一起来简单了解一下,垃圾回收收集器都有哪些类型。
1、Serial和SerialOld收集器
Serial收集器是基本、早的收集器,Serial收集器是单一线程,就是在GC的时候STW(StopTheWorld),暂停所有用户线程,如果GC时间过长,用户可以感到卡顿。SerialOld也是单线程,作用于老年代。
优点:简单高效,拥有很高的单线程收集效率
缺点:需要STW,暂停所有用户线程
算法:Serial采用复制算法,SerialOld采用标记-整理算法
2、ParNew收集器
ParNew是Serial的多线程版本,实现了并行收集,原理跟Serial一致(并行指的是多个GC线程并行,但是用户线程还是暂停,并发指的是用户线程和GC线程同时执行)。ParNew默认开启和CPU个数相同的线程数进行回收。
优点:在多CPU时,比Serial的效率高。
缺点:还是需要STW,单CPU时比Serial效率低
算法:复制算法
3、ParallelScavenge收集器
新生代收集器,也是复制算法,和ParNew一样并行的多线程收集器,更关注系统的吞吐量(吞吐量=(运行用户代码的时间)/(运行用户代码的时间+GC时间))
可以通过参数-XX:+UseAdaptiveSizePolicy开启自适应策略,这样我们不需要手动设置,虚拟机会根据运行情况动态调整。
4、ParallelOld收集器
是ParallelScavange的老年代版本,因为ParallelScavange无法和CMS搭配使用,所以只能和SerialOld。自从ParallelOld出现,就有了ParallelScavange+ParallelOld的组合,这是JDK1.8使用的,注重吞吐量的一组收集器。
5、CMS收集器
这是优化GC停顿时间为目标的收集器,并发回收(仍然需要STW,但是时间很短)。通过-XX:+UseMarkSweepGC启用。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。