JVM 是 Java Virtual Machine(Java 虚拟机)的缩写。一台执行 Java 程序的机器。
计算机语言: 计算机能够直接执行的指令。这种指令和系统及硬件有关。
计算机高级语言: 在遵循语法的前提下,写一个文本文件,之后利用某种方式,把文本转换为计算机指令 执行。
A. 编译型语言(C 语言):文本文件(.c) --> 编译器 --> 可执行文件(.exe) --> 执行机器指令。特点:运行速度快,但不能跨平台
B. 解释型语言(JavaScript):文本文件 --> 解释器 --> 翻译成机器指令并执 行。特点:运行速度较慢,但能跨平台
JAVA 语言:先编译,后解释执行 文本文件(java) --> 编译器 --> class 文件(虚拟指令) --> JAVA 虚拟机(JVM)–> 解释为指令执行。
(1)JDK(IAVA开发环境)=:JRE+工具(编译器、调试器、其他工具)+类库 编译器:将JAVA文件编译为JVM能够看懂的文件(class文件)
(2)JRE(JAVA运行环境):JVM+JAVA解释器 Java解释器:将虚拟指令解释为机器指令执行。
(3)JVM(JAVA虚拟机)
打开class文件查看结构
什么是 u2,u4? u2:代表数据占两个字节 u4:代表数据占四个字节
JDK 编译对应的版本号
结论
编译的本质就是将 java 源文件转为 JVM 能够认识的 16 进制 class 文件格式
JVM执行引擎
堆内存模型
可达性分析
类加载过程
栈帧
栈帧的结构