本文介绍: 为什么分代GC算法要把堆分成年轻代和老年代?⚫ 系统中的大部分对象,都是创建出来之后很快就不再使用可以被回收,比如用户获取订单数据,订单数据返回给用户之后就可以释放了。⚫ 老年代中会存放长期存活的对象,比如Spring的大部分bean对象,在程序启动之后就不会被回收了。⚫ 在虚拟机的默认设置中,新生代大小要远小于老年代的大小分代GC算法将堆分成年轻代和老年代主要原因有:1、可以通过调整年轻代和老年代的比例来适应不同类型的应用程序,提高内存的利用率和性能。
⚫ 系统中的大部分对象,都是创建出来之后很快就不再使用可以被回收,比如用户获取订单数据,订单数据返回给用户之后就可以释放了。
⚫ 老年代中会存放长期存活的对象,比如Spring的大部分bean对象,在程序启动之后就不会被回收了。
⚫ 在虚拟机的默认设置中,新生代大小要远小于老年代的大小
1.垃圾回收器的组合关系
垃圾回收器是垃圾回收算法的具体实现。
由于垃圾回收器分为年轻代和老年代,除了G1之外其他垃圾回收器必须成对组合进行使用。
具体的关系图如下:
1.年轻代-Serial垃圾回收器
2.老年代-SerialOld垃圾回收器
3.年轻代-ParNew垃圾回收器
4.老年代- CMS(Concurrent Mark Sweep)垃圾回收器
CMS执行步骤:
CMS垃圾回收器存在的问题缺点:
CMS垃圾回收器存在的问题 – 线程资源争抢问题
5.年轻代-Parallel Scavenge垃圾回收器
6.老年代-Parallel Old垃圾回收器
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。