《给产品经理讲JVM》:垃圾收集器

本文介绍了JVM中的多种垃圾收集器,包括Serial、ParNew、ParallelScavenge、SerialOld、ParallelOld、CMS、G1以及实验中的Shenandoah和ZGC。重点讲述了各收集器的特点、优缺点和在不同场景下的应用。
摘要由CSDN通过智能技术生成

前言

在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习:

产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用呢?

我:当然,如果说垃圾收集算法是打狗棒法,那么垃圾收集器就是历届的丐帮帮主们,不同的帮主领悟到的自然也就不同,我先对这些帮主进行一个简单的介绍,看图!

我:我从回收的区域去对垃圾收集器进行了一个简单的划分,大致可以分为这样九种,下面就且听我为你一一道来。

产品大大:好哒

Serial 收集器

我:下面要说的就是一款非常古老的「新生代收集器」—— Serial 收集器,它的历史可以追溯到 JDK 还是以1.x命名的时代(大概时间在我五岁的时候?

产品大大:从 Serial 这个名字上可以看的出,这应该是一款串行(单线程)收集器,对吧?

我:没错,Serial 收集器是一款单线程的收集器,它的收集过程也很简单(如下图),虽然它只会使用一个处理器或一条线程去收集垃圾,但是这里我不喜欢称之为单线程收集器,它更适合「串行」这个词,因为它在进行 GC 的时候,必须暂停掉其他的线程(Stop The World,STW)

产品大大:那么这个收集器是不是已经废弃掉了啊,仅仅停留在历史中,作为一个值得去纪念的东西?

我:其实也并不能这么说,虽然它简单,但是简单有简单的好处,因为单线程,所以没有切换线程的资源开销,所以在单核CPU的环境下,它的表现反而会显得更加优秀,只能说是没有最好的收集器,只有最适合的收集器~

产品大大:酱紫哦,那么我们来说下一个收集器吧,这个我已经有一个大概的了解了~

ParNew 收集器

我:下一个收集器啊,叫做 ParNew 收集器,这个收集器和上面我们所说的 Serial 收集器基本上一模一样,除了它会启动多个GC线程去进行垃圾的收集(并行收集)

产品大大:并行?我只听过并发哦。。

我:并发指的是工作线程与垃圾收集线程之间的关系,而并行指的是多条垃圾收集线程之间的关系,这两个的概念是不一样的,并行的时候,工作线程处于等待状态。而并发的时候,工作线程处于活动状态。

产品大大:那么它和 Serial 收集器比起来有什么区别呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oling Cat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值