JVM面试题

本文详细梳理了JVM面试中的关键问题,涵盖基础部分、对象管理、类加载、内存管理和垃圾回收等方面,包括JVM结构、垃圾对象判断、内存分配策略、类加载机制和各种GC算法等内容,旨在帮助读者全面掌握JVM相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、基础部分

二、对象管理

三、类加载

四、内存管理

五、分代管理

六、垃圾回收

七、参数命令

一、基础部分

1、什么是Java虚拟机?

2、为什么Java被称作是“平台无关的编程语言”?

3、JVM整体结构。

4、JVM提供的常用工具

5、生产环境CPU占用过高,你如何解决?

6、如何判断一个常量是废弃常量?

7、什么是内存屏障?

8、什么是OSGI?

9、什么是模块化编程与热插拔?

10、什么是方法内联?

11、JVM如何确定垃圾对象?

12、说一下JVM调优的工具?

13、invokedynamic指令是干什么的?

14、如何判断一个Java对象是否存活?

15、强引用、软引用、弱引用、虚引用分别是什么?

16、什么是JAVA软引用?

17、JAVA软引用应用场景?

18、怎么打

### 关于 JVM 面试题的常见问题及其解析 #### 1. **JVM 内存结构** JVM 的内存主要分为堆、方法区、栈、本地方法栈以及程序计数器五个部分。其中,堆是垃圾回收的主要区域,被划分为新生代和老年代[^1]。 ```java // 新生代中的对象分配演示 public class ObjectAllocation { public static void main(String[] args) { byte[] allocation1, allocation2; allocation1 = new byte[2 * 1024 * 1024]; // 对象可能进入 Eden 区 allocation2 = new byte[2 * 1024 * 1024]; // 如果空间不足,则触发 Minor GC } } ``` #### 2. **GC 过程与算法** 常见的垃圾收集算法有标记-清除法、复制法、标记-整理法以及分代收集法。在实际应用中,通常会采用 CMS 或 G1 收集器来优化性能[^1]。 #### 3. **类加载机制** JVM 类加载过程包括加载、验证、准备、解析和初始化阶段。双亲委派模型确保了 Java 核心库的安全性和一致性。 #### 4. **引用类型** Java 中存在四种不同的引用类型:强引用、软引用、弱引用和虚引用。这些引用类型主要用于管理内存资源并配合垃圾回收器工作[^5]。 #### 5. **Happens-Before 原则** Java 提供了一套 Happens-Before 规则以保障线程间的可见性。其中包括程序顺序规则、监视器锁规则、volatile 变量规则等八大原则[^3]。 #### 6. **循环引用问题** 即使两个对象相互持有对方的引用,在它们不再被任何外部变量引用的情况下,现代垃圾回收器仍然能够识别这种关系并将两者都回收掉[^2]。 ```java // 循环引用示例 class Node { private Node next; public Node(Node n) { this.next = n; } protected void finalize() throws Throwable { System.out.println("Finalizing..."); } } public class CircularReferenceTest { public static void main(String[] args) throws InterruptedException { Node nodeA = new Node(null); Node nodeB = new Node(nodeA); nodeA.next = nodeB; // 创建循环引用 nodeB = null; nodeA = null; System.gc(); Thread.sleep(100); // 等待垃圾回收完成 } } ``` #### 7. **JVM 参数调优** 通过设置 `-Xms` 和 `-Xmx` 来指定初始堆大小和最大堆大小;利用 `-XX:+UseG1GC` 开启 G1 垃圾收集器可以有效提升大型应用程序的表现[^4]。 --- ###
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老王随聊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值