高级Java工程师面试题及答案.docxVIP

  • 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)

1亿VIP精品文档

相关文档