文章列表

CMS 和 G1 垃圾回收器的区别是什么?

CMS 和 G1 垃圾回收器的区别是什么?

本文深度解析CMS和G1垃圾回收器的核心区别。从堆内存布局、回收算法(标记-清除 vs 标记-整理)、停顿模型、并发机制到适用场景全面对比,并剖析CMS的碎片化问题与G1的可预测停顿优势,助你掌握JVM低延迟回收器选型与调优要点。


犬小哈2026/3/1Java面试八股文
OOM 引起原因以及如何排查?

OOM 引起原因以及如何排查?

本文深度解析OOM(OutOfMemoryError)的常见原因,涵盖Java堆、元空间、栈/线程、直接内存等区域溢出场景,并系统介绍排查方法与工具链(堆转储、MAT分析、jstat监控、jmap直方图等)。结合代码示例与最佳实践,助你快速定位内存问题,提升线上故障处理能力。


犬小哈2026/3/1Java面试八股文
JVM 运行时内存区域如何划分的?

JVM 运行时内存区域如何划分的?

本文深度解析JVM运行时内存区域的划分,包括线程私有的程序计数器、Java虚拟机栈、本地方法栈,以及线程共享的堆、方法区(JDK8后元空间取代永久代)。详解每个区域的作用、存储内容、异常类型,并延伸至直接内存与最佳实践,助你掌握JVM内存管理核心。


犬小哈2026/3/1Java面试八股文
什么是 AOT 编译?和 JIT 有什么区别?

什么是 AOT 编译?和 JIT 有什么区别?

本文深度解析AOT编译与JIT编译的核心区别。从编译时机、启动速度、峰值性能、内存占用、动态特性支持等维度全面对比,并分析各自适用场景(传统后端 vs Serverless/云原生),结合GraalVM Native Image与HotSpot JVM,助你理解Java执行技术演进与选型。


犬小哈2026/2/28Java面试八股文
什么情况会导致 JVM 退出?

什么情况会导致 JVM 退出?

本文深入解析JVM退出的各种原因,涵盖正常退出(非守护线程结束)、主动调用System.exit()/Runtime.halt()、致命错误(如OOM)以及外部信号(SIGTERM/SIGKILL)等场景。详解守护线程机制、关闭钩子的执行条件与优雅停机实践,助你全面掌握JVM生命周期与线上稳定性知识。


犬小哈2026/2/25Java面试八股文
YoungGC 和 FullGC 的触发条件是什么?

YoungGC 和 FullGC 的触发条件是什么?

本文深入解析Young GC和Full GC的触发条件。详解Young GC由Eden区满触发,Full GC则涉及老年代空间不足、元空间满、System.gc()调用及CMS/G1等收集器的特有场景。结合GC日志分析与调优建议,助你掌握JVM核心知识。


犬小哈2026/2/25Java面试八股文
JVM 中一次完整的 GC 流程是怎样的?

JVM 中一次完整的 GC 流程是怎样的?

本文深入解析JVM中一次完整的GC流程,涵盖Minor GC、Major GC/Full GC的触发条件与执行过程,详解对象分配与晋升机制(年龄阈值、动态年龄判断、空间分配担保),并对比Parallel、CMS、G1、ZGC等收集器的流程差异。附GC日志示例与常见误区,助你彻底掌握JVM垃圾回收核心。


犬小哈2026/2/25Java面试八股文
FullGC 多久一次正常?

FullGC 多久一次正常?

本文深入探讨Full GC多久一次算正常,分析不同业务场景下的理想频率,讲解Full GC的触发原因、监控方法及调优策略。助你掌握JVM性能评估与问题排查核心技能。


犬小哈2026/2/25Java面试八股文