JJava 知识库
JAVA INTERVIEW

高频面试题

JVM进阶约 1 分钟

你们线上选的是什么垃圾收集器?为什么这么选,业务最关注哪些 GC 指标?

参考回答约 1 分钟 · 口语表达
我的判断

收集器按业务延迟目标、堆大小和吞吐选择;对常规服务我会先用 G1 建基线,大堆且停顿要求严格时再评估 ZGC。

例如 4~16GB 堆、接口希望 P99 稳定在几百毫秒内,我会先用 JDK 默认的 G1,减少自定义参数。几十 GB 以上堆且业务对停顿极敏感,会在同样流量下评估 ZGC,但也接受它更高的并发 CPU 和内存开销。离线吞吐任务则可能更关心总处理时间,而不是每次停顿。

业务侧我主要看 GC 是否真的影响用户请求

  • 停顿时间和接口 P99 是否同一时刻抬升;
  • 分配速率、Young GC 频率和晋升速率;
  • Old 区占用趋势、Mixed/Full GC 次数;
  • GC CPU 占比和应用有效吞吐。

选型会用生产流量回放和故障场景验证,观察发布后预热、流量峰值和大对象分配。只拿平均暂停或网上一组参数做决定,通常会忽略本业务对象生命周期。