Java 7种经典垃圾回收器


7种经典垃圾回收器:Serial、Serial old、ParNew、Parallel Scavenge、Parallel old、CMS、G1

串行回收器:Serial、Serial old

并行回收器:ParNew、Parallel Scavenge、Parallel old

并发回收器:CMS、G1

1.Serial收集器:Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。单线程的收集器,收集垃圾时,必须stop the world,使用复制算法。


2.Serial Old收集器:是Serial收集器的老年代版本,单线程收集器,使用标记整理算法。它主要有两大用途:一种用途是在JDK1.5以及以前的版本中与Parallel Scavenge收集器搭配使用,另一种用途是作为CMS收集器的后备方案。

启用命令: -XX:+UseSerialGC -XX:+UseSerialOldGC


3.Parale Scavenge收集器:Parallel收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为(控制参数、收集算法、回收策略等等)和Serial收集器类似。默认的收集线程数跟cpu核数相同,当然也可以用参数(-XX:ParallelGCThreads)指定收集线程数,但是一般不推荐修改。

Parallel Scavenge收集器关注点是达到一个可控的吞叶量,所谓吞吐量就是CPU中用于运行用户代码的时间与CPU总消耗时间的比值。如果虚拟机总共运行100分钟,其中垃圾花掉1分钟,香叶量就是99%。

新生代采用复制算法,老年代采用标记-整理算法。

4.Parallel Old收集器:Parallel Scavenge收集器的老年代版本。使用多线程和“标记-整理”算法。在注重吞吐量以及CPU资源的场合,都可以优先考虑 Parallel Scavenge收集器和Parallel Old收集器(JDK8默认的新生代和老年代收集器)。

启用命令 -XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代)


5.ParNew收集器:ParNew收集器其实跟Parallel收集器很类似,区别主要在于它可以和CMS收集器配合使用。新生代采用复制算法,老年代采用标记-整理算法。


6.CMS(Concurrent Mark Sweep) 收集器: 收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体验的应用上使用,它是HotSpot虚拟机第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。整个过程分为5个步骤:初始标记->并发标记->重新标记->并发清理->并发重置。


7.G1收集器:标记整理算法实现,运作流程主要包括以下:初始标记,并发标记,最终标记,筛选回收,不会产生空间碎片,可以精确地控制停顿。

相关文章

图解Java垃圾回收机制,写得非常好

什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用...

Java的垃圾回收(Garbage Collection)机制

(原文2006年发在CSDN上,ID是beepbug。因为是发表在CSDN上,内容可能有点偏深奥。如果有不明白处,可以在评论区提出,或私信我。)一.谁在做Garbage Collection? 一种流...

JVM内存清洁工:垃圾回收算法如何让Java程序跑得更快更稳?

在Java的世界里,程序运行时的内存就像一间不断产生垃圾的房间。如果没有“清洁工”及时清理,垃圾堆积会导致房间无法容纳新物品,最终程序崩溃。而JVM的垃圾回收(GC)机制,正是这位隐形的“扫地僧”,默...

「Java入门」十五 垃圾回收机制

今天来自Java300课程的垃圾回收机制,有视频详解在这里,点击「链接」就可以看到了哦,有需要配套视频资料的小伙伴也可以点击「链接」哦。垃圾回收机制(Garbage Collection)Java引入...

Java虚拟机中的垃圾回收算法:那些让你的内存“焕然一新”的秘密

Java虚拟机中的垃圾回收算法:那些让你的内存“焕然一新”的秘密在Java的世界里,Java虚拟机(JVM)就像一个精明的管家,它不仅管理着我们的代码执行,还负责清理内存中不再需要的对象,这就是我们所...

JVM03——四种垃圾回收算法,你都了解了哪几种

在之前的文章中,已经为各位带来了JVM的内存结构与堆内存的相关介绍,今天将为为各位详解JVM垃圾回收与算法。关注我的公众号「Java面典」了解更多 Java 相关知识点。如何确定垃圾想要回收垃圾,必须...