public static void main(ng.String[]);
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic 3: ldc
#2; Field java/lang/System.err #3; String “Hello world!\n”
• 基于模板的解释执行
– 高级语言 + 汇编语言 – 一个字节码被解释成固定的若干条指令序列,这样的一个序列
片段称为一个“模板” – 字节码解析:通过检索模板表实现 – 优点:性能高(通常达到前者的2~3倍) – 缺点:引入平台相关性,加大了移植难度
2021
36
即时编译
• 综合解释器、翻译器的优点 • 以方法的运行频度区分两种执行方式
2021
7
本书要介绍什么内容?
(一)Java虚拟机的基本原理 (二)解释器
- 纯平台无关的解释器 - 基于模板的解释器
(三)即时编译器
- C1 和 C2 - 寄存器分配 - 翻译规则 - 重定位 - 翻译后代码管理 - 运行时环境的切换
(四)垃圾回收
(五)异常处理
(六)JNI
(七)重要数据结构
- 栈帧 - 常量池
• 优点
– 规格紧凑,体积精简
2021
21
《Java虚拟机规范》
• 规定所有字节码的规格
– 参数 – 运算语义 – 返回值 – 异常处理方式
2021
22
字节码实例
aload_0
[简述] 从局部变量表装载对象指针 [格式] aload_0 = 42 [栈] ... => ..., value [详述] 将当前Java栈中局部变量表的第一个 元素压入栈顶