文章列表

什么是 Class 常量池,和运行时常量池区别是什么?

本文深度解析Class常量池与运行时常量池的核心区别。从.class文件的静态结构到JVM运行时内存的加载过程,详解两者的定义、存储位置、产生时机及动态性,并结合javap命令与String.intern()示例,助你彻底理解这一JVM高频考点。

什么情况会导致 JVM 退出?

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

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

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

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

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

FullGC 多久一次正常?

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

项目中是如何选择垃圾回收器的?为啥选择这个?

本文深入解析项目中如何根据业务场景选择合适的JVM垃圾回收器。对比Parallel、G1、ZGC等主流回收器的特点与适用场景,详解吞吐量与延迟的权衡,并提供选型实战经验与调优建议。助你掌握GC选型核心技能。

什么是双亲委派模型?怎么破坏?

本文深度解析Java双亲委派模型的核心原理、设计初衷及源码实现,并详细阐述三种破坏双亲委派的方式:重写loadClass、线程上下文类加载器、OSGi/模块化框架。结合Tomcat隔离、JDBC驱动加载等实战场景,助你透彻理解这一JVM高频面试考点。

什么是强引用、软引用、弱引用和虚引用?

本文深度解析Java的四种引用类型:强引用、软引用、弱引用和虚引用。详解它们的定义、GC回收行为、与ReferenceQueue的配合,以及在实际开发中的应用场景(如缓存、防止内存泄漏)和常见误区。助你掌握JVM内存管理核心知识。

新生代和老年代的 GC 算法有哪些?

本文深度解析新生代与老年代的GC算法差异。详解新生代复制算法原理、老年代标记-清除与标记-整理算法的优缺点,并关联Serial、Parallel、CMS、G1等具体收集器,剖析分代策略的设计思想与常见误区,助你掌握JVM调优核心知识。

内存泄漏和内存溢出的区别是什么?

本文深度解析内存泄漏与内存溢出的核心区别。从定义、原理、代码示例到对比分析,详细阐述内存泄漏如何累积导致内存溢出,并介绍常见的泄漏场景(如静态集合、未关闭资源)及排查工具(MAT、JProfiler)。助你彻底掌握这一JVM高频面试考点与线上问题定位能力。