JVM 如何运行 Java 代码
Java 代码运行分为两个阶段:编译期和运行时
编译期(build):
-
在编译阶段,Java 会将 Java 源代码编译为字节码文件,字节码文件中包含了 JVM 执行的指令、类的元数据信息(类名、方法和属性等)等
-
字节码并不是机器码,操作系统无法直接识别,需要在操作系统上安装不同版本的 JVM 来识别
运行时(run):
- JVM 会先通过类加载器加载字节码文件,然后将字节码加载到 JVM 的运行时数据区,再通过执行引擎转化为机器码,最终交给操作系统执行
- 可以使用
javap
查看字节码指令序列,使用hexdump
以十六进制形式查看文件内容 - JVM 解析字节码指令来完成程序执行,常见的执行方式有两种:
- 解释执行:对字节码逐条解释执行
- JIT:即时编译,在运行时将热点代码优化并缓存起来,下次再执行时直接使用缓存的机器码
大约 25 分钟