Chapter 2. The Structure of the Java Virtual Machine阅读笔记

第二章. Java虚拟机的结构

这篇文章定义了一个抽象的java虚拟机。不包含任何的具体实现。
为了正确地实现一个java虚拟机,你只需要正确地解析class文件并且正确地执行文件定义的操作。不属于java虚拟机定义的实现细节将不必要地限制实现者的创造力。比如,运行时数据区的内存布局,使用的垃圾回收算法,以及任何对java虚拟机指令的优化(比如,将它们翻译成机器代码)都由实现者自行决定。
本规范所有对Unicode的引用都针对Unicode6.0.0版本。 http://www.unicode.org/.

2.1 Class文件格式

JVM执行的代码使用一种硬件,操作系统独立的二进制格式,一般(不是必须)存放在一个叫做class的文件格式中。class文件精确地定义了如何表示一个类或者接口,包括字节序等细节。

数据类型

JVM操作两种类型的数据,primitive和reference。
JVM期望在run time之前完成几乎所有的类型检查,一般由编译器完成而不是JVM。primitive的值不需要被标记或者在运行时被检查来确认它们的类型,或者与reference类型的值区分。取而代之,通过使用为了操作特定类型而设计的JVM指令集来区分操作数的类型。比如,iadd, ladd, fadd, dadd。
JVM明确支持对象。对象是动态分配的class实例或者数组。指向对象的引用被认为是JVM的reference类型。引用类型的值可以认为是指向对象的指针。对一个对象的多个引用是可以存在的。

2.3 Primitive类型与值

上一篇:泛型的通配符和上下限


下一篇:Study Notes of CS:APP (Chapter 1)