Java 面试题
目录

Java 虚拟机 (JVM) 中 ParNew 收集器的特点是什么?

· 约 2 分钟读完 · 第 132 / 274 章

推荐答案

ParNew 收集器是 JVM 中一种专门用于新生代的垃圾收集器,它是 Serial 收集器的多线程版本。其主要特点包括:

  1. 多线程并行收集:ParNew 收集器使用多线程进行垃圾回收,能够充分利用多核 CPU 的性能优势,提升垃圾回收的效率。
  2. 与 CMS 收集器配合使用:ParNew 收集器通常与 CMS(Concurrent Mark Sweep)收集器配合使用,作为 CMS 收集器的新生代收集器。
  3. 适用于新生代:ParNew 收集器主要用于新生代的垃圾回收,采用复制算法来回收新生代的内存空间。
  4. Stop-The-World:在进行垃圾回收时,ParNew 收集器会暂停所有应用线程(Stop-The-World),但由于是多线程并行回收,暂停时间相对较短。

本题详细解读

1. 多线程并行收集

ParNew 收集器是 Serial 收集器的多线程版本,它使用多个线程并行地进行垃圾回收。与 Serial 收集器相比,ParNew 收集器在多核 CPU 环境下能够显著提升垃圾回收的效率。由于现代服务器通常配备多核 CPU,ParNew 收集器在这种环境下表现尤为出色。

2. 与 CMS 收集器配合使用

CMS 收集器是一种以获取最短回收停顿时间为目标的垃圾收集器,它主要作用于老年代。由于 CMS 收集器本身不处理新生代的垃圾回收,因此需要与一个新生代收集器配合使用。ParNew 收集器就是 CMS 收集器的默认新生代收集器,两者配合使用可以实现高效的垃圾回收。

3. 适用于新生代

ParNew 收集器主要用于新生代的垃圾回收。新生代的内存空间通常较小,且对象生命周期较短,因此 ParNew 收集器采用复制算法来回收新生代的内存空间。复制算法将新生代内存分为 Eden 区和两个 Survivor 区,每次垃圾回收时将存活的对象从一个 Survivor 区复制到另一个 Survivor 区,最后清空 Eden 区和之前的 Survivor 区。

4. Stop-The-World

ParNew 收集器在进行垃圾回收时,会暂停所有应用线程(Stop-The-World)。这意味着在垃圾回收期间,应用程序的所有线程都会暂停执行,直到垃圾回收完成。虽然 Stop-The-World 会导致应用程序的短暂停顿,但由于 ParNew 收集器是多线程并行回收,停顿时间相对较短,对应用程序的影响较小。

综上所述,ParNew 收集器是一种高效的新生代垃圾收集器,特别适合与 CMS 收集器配合使用,适用于多核 CPU 环境下的 Java 应用。