如何理解几种常见的垃圾收集器

如题所述

第1个回答  2022-07-11

如果说垃圾收集算法是Java垃圾回收的方法论,那么垃圾收集器就是Java垃圾回收的具体实现方式,Java虚拟机厂商对垃圾回收器应该如何实现并没有明确的规定,不同厂商,不同版本的虚拟机对垃圾回收机均不相同,而且也没有哪一种垃圾回收器是完美的,万能的,每一种都存在某种程度的优点和缺点,我们使用哪一种垃圾回收器是要根据具体应用场景的特点来选择。

常见的垃圾收集器主要有Serial收集器,Serial Old收集器,ParNew收集器,Parallel Scavenge收集器,Parallel Old收集器,CMS收集器,G1收集器。

Serial收集器是最基本、 历史 最悠久的收集器。

特点

例如,你妈妈打扫房间的时侯,你必须坐在凳子上不可能乱丢垃圾。

如桌面应用

Serial收集器的老年代收集版本

是Serial收集器的多线程版本,它做到用户线程和工作线程可以同时运行,也就是你妈妈打扫卫生的同时,你还可以丢垃圾。

它也是老年代收集器。

新生代收集器,使用复制算法,并行的多线程收集器。目标则是达到一个可控制的吞吐量。

Parallel Scavenge收集器的老年代版本

以获取最短回收停顿时间为目标的收集器。

CMS收集器的内存回收过程是与用户线程一起并发地执行的。

特点

是基于“标记-整理”算法实现的收集器,也就是说它不会产生空间碎片。

将整个Java堆(包括新生代、老年代)划分为多个大小固定的独立区域(Region),并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域。保证了G1收集器在有限的时间内可以获得最高的收集效率。

它可以非常精确地控制停顿。

#jvm# #java# #垃圾回收#

相似回答