内存区域答法

线程私有:PC、栈、本地方法栈;共享:堆、方法区(JDK8 元空间)。直接内存不属于运行时数据区但常一起考。

对象创建五步

类加载检查 → 分配内存(指针碰撞/空闲列表)→ 零值初始化 → 设置头信息 → init 方法。逃逸分析可能栈上分配或标量替换。

GC 追问

Safe Point 与 STW;G1 Remembered Set 跨区引用;ZGC 着色指针与读屏障。答收集器要绑定停顿目标与堆大小

排查题

「频繁 Full GC」从元空间、老年代晋升、System.gc、大对象直接进老年代四条线展开。

课堂外的思考

学习「2026 最新 JVM 面试题总结:内存区域、类加载、垃圾回收与线上排查」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。

与同事的讨论方式

我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。

可复现实验

为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命令,或一组压测对比。记录环境(JDK 小版本、CPU 核数、容器限制),结论才可靠。实验细节不必全部公开,但索引要能找到。

补充复习

把本篇三个关键词写入间隔重复卡片,并各关联一个真实项目场景;暂时用不到的概念标记「待实践」,避免笔记只增不用。