Java虚拟机之七大垃圾回收器

青旅半醒 2022-01-30 01:31 196阅读 0赞

GC分新生代和老年代,鸟瞰如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lvb25lZXA_size_16_color_FFFFFF_t_70

Serial收集器
单线程,垃圾收集时,必须暂停其他所有的工作线程
Client模式下的默认新生代收集器.简单而高效(限定单个CPU,与其他收集器的单线程比)

ParNew收集器
Serial收集器的多线程版本
除了Serial收集器外,目前只有它能与CMS收集器配合工作

Parallel Scavenge收集器
吞吐量优先(Throughput)的收集器,提升吞吐量.

Serial Old收集器
Serial收集器的老年代版本,标记-整理
1.与Parallel Scavenge收集器搭配
2.作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用

Parallel Old收集器
Parallel Scavenge收集器的老年代版本
标记-整理
这种组合的吞吐量甚至还不一定有ParNew加CMS的组合“给力”
在注重吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。

CMS收集器
垃圾收集线程与用户线程(基本上)同时工作

初始标记(CMS initial mark) (Stop The World)
并发标记(CMS concurrent mark)
重新标记(CMS remark)(Stop The World)
并发清除(CMS concurrent sweep)

G1收集器
替换掉JDK 1.5中发布的CMS收集器
初始标记(Initial Marking)
并发标记(Concurrent Marking)
最终标记(Final Marking)
筛选回收(Live Data Counting and Evacuation)

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java虚拟 —— 垃圾回收机制

    在Java虚拟机中,对象和数组的内存都是在堆中分配的,垃圾收集器主要回收的内存就是再堆内存中。如果在Java程序运行过程中,动态创建的对象或者数组没有及时得到回收,持续积累,最

    相关 Java虚拟垃圾回收机制

    垃圾收集 垃圾收集主要是针对堆和方法区进行。 程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三