内存与垃圾回收——(一)JVM 与 Java 体系结构

1_JVM 与 Java 体系结构

HotSpot虚拟机

  • JIT 编译器通过计数器找到最具编译价值的代码(即热点代码),触发及时编译,编译成本地机器指令并缓存到方法区,或进行或栈上替换,提升效率。

  • 可以与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。

  • 解释器负责程序响应时间,编译器负责性能。

其它虚拟机:

  • Graal VM 是基于 HotSpot 的跨语言全栈虚拟机。

  • JRockit 专注于服务器端应用,只有编译器,是最快的JVM。

  • J9 类似 HotSpot。

  • Azul VM、BEA Liquid VM 与硬件耦合的虚拟机。

  • Apache Harmony 在 Android SDK 有大范围的应用。

Class文件内容

(见后续中篇)

字节码与类的加载 —— Class 文件结构

Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项严格按顺序排列,没有任何分隔符。

占用空间大于 8 字节的数据项,按照高位在前的方式分割多个 8 字节进行存储。

Class 文件格式里只有两种类型:无符号数、表。

每个 Class 文件对应一个 ClassFile 结构。

指令集

Java编译器输入的指令流是基于栈的指令集架构,具有跨平台性。指令集小,编译容易实现,但所需的指令多,执行性能比寄存器差。

内存与垃圾回收——(一)JVM 与 Java 体系结构

JVM整体结构

简图

内存与垃圾回收——(一)JVM 与 Java 体系结构

详细图

内存与垃圾回收——(一)JVM 与 Java 体系结构