列举常用的垃圾收集器,并简要说明其特点。
Java虚拟机中有多种垃圾收集器,下面简单介绍一些常用的:
- Serial收集器:它是最基本的收集器,对于单核CPU或小容量内存的机器来说,Serial收集器是一个不错的选择。它在进行垃圾收集时,会暂停所有的用户线程,直到垃圾收集结束。因此,它也被称为“Stop-The-World”收集器。Serial收集器主要应用在客户端应用或轻负载的服务器上。
-
Parallel(并行)收集器:它是一种多线程的垃圾收集器,主要设计用来在多核CPU的环境下提高垃圾收集的效率,但是在进行垃圾收集时,也会暂停所有的用户线程。Parallel收集器主要应用在多核或多CPU的服务器环境中。
-
CMS(Concurrent Mark Sweep)收集器:它是一种以获取最短回收停顿时间为目标的收集器。CMS收集器采用了“标记-清除”算法,并且大部分工作都在用户线程运行的同时进行。它主要应用在对响应时间要求严格的应用中,比如网页服务器、交互式应用等。
-
G1(Garbage-First)收集器:它是一种面向服务器的垃圾收集器,主要应用在多核CPU和大内存的服务器环境中。G1收集器通过划分多个小区域来避免全局的“Stop-The-World”,并且可以预测垃圾收集的停顿时间,从而达到一个稳定的响应时间。
这些垃圾收集器各有优缺点,需要根据具体的应用场景和需求来选择。