Skip to content

面试速答(先看这里)

**一句话结论:**首先,在垃圾收集器上面, Java 8 中默认的Parallel Scavenge GC+Parallel Old GC的 ,分别用来做新生代和老年代的垃圾回收。

60秒标准回答:

Java 8 和 Java 11都是LTS版本的JDK,所以会有人经常问他们之间的区别。特别是在GC上面的差别

首先,在垃圾收集器上面, Java 8 中默认的Parallel Scavenge GC+Parallel Old GC的 ,分别用来做新生代和老年代的垃圾回收。而在 Java 11中默认采用的是G1进行整堆回收的 (Java 9中就是默认的了)

另外, Java 11中还新增了一种垃圾收集器,那就是ZGC ,他可以在保证高吞吐量的同时保证最短的暂停时间

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**Java 8 和 Java 11都是LTS版本的JDK,所以会有人经常问他们之间的区别。
  • **要点2:**另外, Java 11中还新增了一种垃圾收集器,那就是ZGC ,他可以在保证高吞吐量的同时保证最短的暂停时间。
  • **要点3:**在知道了垃圾收集器上面的区别之后,就可以基于Parallel Scavenge GC+Parallel Old GC 和 G1的区别进一步说一下GC上面的区别了。
  • **要点4:**在垃圾识别及回收上面, Java 8基于的是单纯地可达性分析,而Java 11中的G1采用的是三色标记法,可以大大降低STW的时长。
  • **要点5:**另外, G1的内存划分是自适应的,它会根据堆的大小和使用情况来动态调整各个区域的大小和比例。

**记忆锚点:**Java → GC+Parallel → Parallel → Scavenge → Old → 新生代和老年代的垃圾回收

追问准备:

  • 围绕「Java」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「GC+Parallel」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Parallel」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

Java 8 和 Java 11都是LTS版本的JDK,所以会有人经常问他们之间的区别。特别是在GC上面的差别。

首先,在垃圾收集器上面,Java 8 中默认的Parallel Scavenge GC+Parallel Old GC的,分别用来做新生代和老年代的垃圾回收。而在Java 11中默认采用的是G1进行整堆回收的(Java 9中就是默认的了)。

另外,Java 11中还新增了一种垃圾收集器,那就是ZGC,他可以在保证高吞吐量的同时保证最短的暂停时间。

📄 ✅JDK 11中新出的ZGC有什么特点?

打开文档:✅JDK 11中新出的ZGC有什么特点?

在知道了垃圾收集器上面的区别之后,就可以基于Parallel Scavenge GC+Parallel Old GC 和 G1的区别进一步说一下GC上面的区别了。

在垃圾识别及回收上面,Java 8基于的是单纯地可达性分析,而Java 11中的G1采用的是三色标记法,可以大大降低STW的时长。

📄 ✅什么是三色标记算法?

打开文档:✅什么是三色标记算法?

另外,G1的内存划分是自适应的,它会根据堆的大小和使用情况来动态调整各个区域的大小和比例。而Parallel Scavenge GC+Parallel Old GC都是固定分配的策略。