jvm规范第二章--jvm结构

 

第二章 jvm结构

这篇文档定义一个抽象的机器,而不说明java虚拟机的任何具体实现。

要正确的实现java虚拟机,就必须能够正确的读取class文件格式并执行文件内部指定的操作。为了不限制jvm实现者的创造力,jvm规范不定义任何实现细节。比如像,运行时数据区的内存布局、垃圾回收算法的使用以及虚拟机指令的内部优化等都留给实现者去判断完成。

 

2.1 class文件格式

被jvm执行的编译代码使用一种与硬件及操作系统无关的二进制形式来表示。通常(但不一定)存储在class文件中。class文件格式明确定义了类和接口的表示形式,包括像字节序等平台相关的细节(不同平台惯用的字节序不一样,只有强制定义才能做到平台无关性)。

 

2.2 数据类型

跟java编程语言类似,jvm操作两种类型的数据:原始类型和引用类型。与之对应,有原始值、引用值两种类型的值可以变量赋值、参数传递、方法返回和数值操作。

jvm希望几乎全部的类型检查在运行时前完成,通常这些检查由编译器完成而不用jvm自己来做。原始类型的数据不需要通过特殊标记或其他手段来在运行时确定他们的类型或者将它们与引用类型数据进行区分。jvm的每个指令都有固定的操作数数值类型,jvm根据这个来确定数值类型。例如,iadd、ladd、fadd和dadd这几个指令的作用都是对两个数值相加然后返回相加结果,但是它们各自的操作数分别是:int、long、float和double。

jvm明确支持对象。对象可以是动态分配的类实例也可以是数组。对一个对象的引用就是jvm中的引用类型。引用类型的值可以看做对象的指针。一个对象可以存在多个引用。对象通常通过引用类型的值进行操作、传输和测试

你可能感兴趣的:(jvm)