APP下载

《跟我一起学JVM》之Serial 垃圾收集器

消息来源:baojiabao.com 作者: 发布时间:2026-05-22

报价宝综合消息《跟我一起学JVM》之Serial 垃圾收集器

乘兴而行,兴尽而返。把过程当做目的,在无聊中寻找意义。

--王小圈 《如何成为一个有趣的人》

关注一下,更多精彩等著您

如果垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机器规范中对垃圾收集器应该如何实现并没有任何规定,不同的厂商、版本一般都会提供引数供使用者根据自己的应用特点和要求组合出各个年代所使用的收集器。这里讨论的收集器基于JDK 1.7 Update 14之后的HotSpot虚拟机器。

GC

直到现在为止还没有最好的收集器出现,更加没有万能的收集器,所以我们选择的只是对具体应用最适合的收集器。如果有一种放之四海皆准确、任何场景下都使用的完美收集器存在,那HotSpot虚拟机器就没必要实现那么多不同的收集器了。

Serial 收集器

Serial收集器是最基本、发展历史最悠久的收集器,在JDK1.3.1之前是虚拟机器新生代收集的唯一选择。该收集器是一个单执行绪的收集器,但它的“单执行绪”的意义并不仅仅说明它只会使用一个CPU或一条收集执行绪去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作执行绪,直到它收集结束。"Stop The World",这项工作实际上是由虚拟机器在后台自动发起和自动完成的,在使用者不可见的情况下把使用者正常工作的执行绪全部停掉,这对很多应用来说都是难以接受的。HotSpot虚拟机器开发团队为消除或者减少工作执行绪因内存回收而导致停顿的努力一直在进行着,使用者执行绪的停顿时间在不断缩短,但是仍然没有办法完全消除。

但实际上到现在为止,Serial收集器依然是虚拟机器执行在Client模式下的预设新生代收集器。它也有着优于其他收集器的地方:简单而高效(与其他收集器的单执行绪比),对于限定单个CPU的环境来说,Serial收集器由于没有执行绪互动的开销,专心做垃圾收集自然可以获得最高的单执行绪收集效率。

历史文章推荐:

《跟我一起学JVM》之理解GC日志

《跟我一起学JVM》之Java执行时资料区域

《Java并发进阶系列》之synchronized的实现原理与应用

2019-12-19 18:53:00

相关文章