1_JVM 与 Java 体系结构
HotSpot虚拟机
-
JIT 编译器通过计数器找到最具编译价值的代码(即热点代码),触发及时编译,编译成本地机器指令并缓存到方法区,或进行或栈上替换,提升效率。
-
可以与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。
-
解释器负责程序响应时间,编译器负责性能。
其它虚拟机:
-
Graal VM 是基于 HotSpot 的跨语言全栈虚拟机。
-
JRockit 专注于服务器端应用,只有编译器,是最快的JVM。
-
J9 类似 HotSpot。
-
Azul VM、BEA Liquid VM 与硬件耦合的虚拟机。
-
Apache Harmony 在 Android SDK 有大范围的应用。
Class文件内容
(见后续中篇)
Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项严格按顺序排列,没有任何分隔符。
占用空间大于 8 字节的数据项,按照高位在前的方式分割多个 8 字节进行存储。
Class 文件格式里只有两种类型:无符号数、表。
每个 Class 文件对应一个 ClassFile 结构。
指令集
Java编译器输入的指令流是基于栈的指令集架构,具有跨平台性。指令集小,编译容易实现,但所需的指令多,执行性能比寄存器差。