- 1
- 0
- 约9.35千字
- 约 22页
- 2026-05-10 发布于四川
- 举报
高级Java工程师面试题及答案
一、JVM深度解析
1.请详细描述一个Java对象从创建到被回收的完整生命周期,并说明在哪些阶段会发生“stop-the-world”现象。
答案:
创建阶段:当遇到`new`关键字时,JVM首先检查该类的符号引用,若未加载则执行类加载过程(加载、验证、准备、解析、初始化)。随后在堆中(具体可能是新生代的Eden区)为对象分配内存。分配方式取决于堆内存的规整程度,可能使用“指针碰撞”或“空闲列表”机制。内存分配完成后,将内存空间初始化为零值(不包括对象头),接着设置对象头信息(如哈希码、GC分代年龄、锁状态标志、类型指针等)。最后执行`init`方法(即构造器),按程序员的意图初始化对象字段。
生存阶段:对象在堆中被应用程序线程引用和使用。期间,对象可能经历多次GC扫描,根据其年龄(经历MinorGC的次数)可能从Eden区晋升到Survivor区(From/To),最终可能晋升到老年代。对象头中的MarkWord会根据锁竞争情况,在无锁、偏向锁、轻量级锁、重量级锁等状态间转换。
回收阶段:当对象不再被任何GCRoots(如栈帧中的局部变量表、静态变量、JNI引用等)直接或间接引用时,它就成为垃圾回收的候选对象。具体回收过程取决于所使用的垃圾收集器。
Stop-The-World(STW)发生点:
1.安全点(Safepoint)的S
原创力文档

文档评论(0)