GC垃圾收集器

    xiaoxiao2021-08-18  106

    我前面有一篇文章简单的介绍过JAVA垃圾回收,现在咱们来讨论一下垃圾收集器. 首先,什么是垃圾收集器,我前面的文章中有介绍到垃圾回收的算法,垃圾收集器其实就是垃圾回收算法的具体实现. 或许很多同学不知道,在JDK中默认的JVM是hotsopt,因此咱们接下来谈论的垃圾收集器全都是基于hotspot的.


    怎么查看jvm版本?就是大家都很熟悉的java -version,如图


    垃圾收集器的种类: 新生代: - Serial收集器:单线程收集器,它运行的时候其他线程必须停止(stop the world).复制算法 - ParNew收集器:并行收集器,它运行的时候其他线程必须停止(stop the world).复制算法 - Parallel Scavenge收集器:也被称为”吞吐量优先”收集器,即可控制垃圾回收占总运行时间的时间比.多线程并行收集器.它运行的时候其他线程必须停止(stop the world).复制算法 老年代: - Serial收集器:单线程收集器.它运行的时候其他线程必须停止(stop the world).标记——整理算法. - Parallel Old收集器:并行收集器.它运行的时候其他线程必须停止(stop the world).标识——整理算法. - CMS(Concurrent Mark Sweep)收集器:并发收集器.它运行的时候某些阶段其他线程必须停止(stop the world).标记——清楚算法.


    这里说一个概念: 并行:多条垃圾回收线程同时工作,此时其他线程处于等待状态 并发:多条垃圾回收线程与其他线程同时执行(并不一定同时,可能交替执行),其他线程扔在运行


    G1收集器: 目前技术最前沿的收集器,不是作用于新生代或老年代,而是把整个对分成若干个区域,每次回收一定区域的内存.且能建立可预测的停顿时间模型. 优势:

    并发执行垃圾回收:其它线程不必停顿分代收集:不需要其它收集器配合就能管理整个堆内存.且能用不同的收集方式回收不同阶段的对象空间整合:采用标记——整理算法可预测的停顿时间:可以掌控垃圾回收时间
    转载请注明原文地址: https://ju.6miu.com/read-676578.html

    最新回复(0)