Java 垃圾回收器

98 阅读2分钟

Java 的垃圾回收器(Garbage Collector)是 Java 虚拟机(JVM)的一部分,负责自动管理内存,释放不再被程序使用的对象,防止内存泄漏和提高程序性能。Java 的垃圾回收器采用自动内存管理的方式,程序员无需手动释放内存,而是交给垃圾回收器来完成。

以下是一些常见的 Java 垃圾回收器:

  1. Serial收集器(Serial Garbage Collector)

    • 使用单线程进行垃圾回收,主要用于单线程的客户端应用,适用于小型应用。
  2. Parallel收集器(Parallel Garbage Collector)

    • 也称为吞吐量收集器,使用多线程进行垃圾回收,适用于多核处理器的服务器环境。它在进行垃圾回收时会尽量利用多个处理器,以提高垃圾回收的吞吐量。
  3. CMS收集器(Concurrent Mark-Sweep Garbage Collector)

    • 使用多线程进行垃圾回收,并且在整个垃圾回收过程中尽量减少停顿时间,适用于对响应时间有要求的应用。但相对于 Parallel 收集器,CMS 的吞吐量可能较低。
  4. G1收集器(Garbage-First Garbage Collector)

    • 也是一种面向服务器的垃圾回收器,它是在Java 7中引入的,通过划分整个堆空间为多个独立的区域,采用多线程的方式进行垃圾回收。G1 的目标是在保证低停顿时间的同时提供高吞吐量。
  5. Z Garbage Collector(ZGC)

    • 是一种低延迟的垃圾回收器,适用于对响应时间有极高要求的应用。它是在 Java 11 中引入的,采用了一些新的技术,如Colored Pointers和Load Barrier,以实现低停顿时间。
  6. Shenandoah Garbage Collector

    • 也是一种低停顿时间的垃圾回收器,适用于对响应时间要求非常高的大型应用。它是在 Java 12 中引入的。

在大多数情况下,Java 虚拟机会根据应用程序的特征和运行环境的配置自动选择默认的垃圾回收器。在需要调优或特殊需求的情况下,可以通过 JVM 的启动参数来选择不同的垃圾回收器。