面试题答案
一键面试Serial垃圾回收器
- 特点:单线程垃圾回收器,在进行垃圾回收时,会暂停所有用户线程。它简单高效,没有线程交互开销。
- 适用场景:适用于客户端应用程序,内存较小,单核CPU环境。
Parallel垃圾回收器
- 特点:多线程垃圾回收器,使用多线程进行垃圾回收,能缩短垃圾回收时间,同样在回收时会暂停用户线程(Stop-the-world)。注重吞吐量,即运行用户代码时间与总运行时间的比值。
- 适用场景:适用于服务器端应用,追求高吞吐量,CPU资源比较充足,堆内存较大的场景。
CMS(Concurrent Mark Sweep)垃圾回收器
- 特点:以获取最短回收停顿时间为目标的垃圾回收器。采用标记-清除算法,在垃圾回收过程中,尽量与用户线程并发执行,减少停顿时间。但会产生碎片化问题,并且对CPU资源敏感。
- 适用场景:适用于对响应时间要求高,停顿时间敏感的应用,如Web应用等,能让用户在垃圾回收时感受到较小的停顿。
G1(Garbage - First)垃圾回收器
- 特点:将堆内存划分为多个大小相等的Region,能更精确地控制停顿时间,可预测停顿。采用标记-整理算法,避免了CMS的碎片化问题。同时,G1可以根据每个Region中垃圾的多少,优先回收垃圾最多的Region(Garbage - First的由来)。
- 适用场景:适用于堆内存非常大,对停顿时间有严格要求,追求高吞吐量和低停顿的应用场景,如大数据、云计算等领域。