极客时间 | 深入拆解Java 虚拟机 专栏学习笔记
“知其然”也要“知其所以然”,学习 Java 虚拟机的本质,更多是了解 Java 程序是如何被执行且优化的。这样一来,你才可以从内部入手,达到高效编程的目的。
01 Java 代码是怎么运行的?
java 运行时环境 JRE Java虚拟机+Java核心类库
虚拟机,编译器,指令序列-字节码,Java 字节码指令的操作码 opcode 被固定为一个字节。
Java 虚拟机运行Java字节码过程
- 编译而成的class文件加载到Java虚拟机中,存放在方法区,method area
- 栈分为 Java方法栈,本地方法栈,PC寄存器
- 运行过程中,每当调用一个Java方法,虚拟机会在当前线程的Java方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。 什么是栈帧?
- java 虚拟机需要将字节码翻译成机器码
- 解释执行:逐条将字节码翻译成机器码并执行;即时编译:JIT,将一个方法中包含的所有字节码编译成机器码之后再执行。前者无需等待编译,后者的优势在于实际运行速度更快。