Skip to content

请用 30 秒说明一个 Java 程序从启动到执行经历了什么

题型:30 秒基础题 · 先讲类如何进入 JVM,再讲代码如何执行,最后落到运行时治理。

30 秒回答

Java 程序启动后,JVM 先创建运行时环境,由类加载器按需完成加载、链接和初始化,再把堆、线程栈、方法区等运行时数据区准备好。字节码通常先由解释器执行,热点代码经过分层编译转成本地机器码,并可能继续做内联、逃逸分析等优化。对象主要分配在堆上,由垃圾收集器依据可达性回收;线上还要通过 GC、线程、类加载和本地内存指标判断运行是否健康。

面试官关注点

  • 是否能把类加载、运行时数据区、执行引擎和 GC 串成一条链路。
  • 是否知道“解释执行”和“JIT 编译”是协作关系,不是二选一。
  • 是否能从概念自然过渡到线上观测和排障。

易错点

  • 不要说 Java 代码会直接被编译成固定机器码后执行,JVM 还有解释与动态编译过程。
  • 不要把方法区、元空间和堆混为一谈;元空间是 HotSpot 对类元数据的一种具体实现。

知识关系

从当前问题继续深入,或者回到提出这个问题的知识入口。