Posted on 2005-11-28 17:46
nemo 阅读(577)
评论(0) 编辑 收藏 所属分类:
编译器、虚拟机
java虚拟机对“运行时数据区”的描述是相当抽象的。不同的虚拟机实现可能具有很不同的内存限制,有的实现可能有大量的内存可用,有的可能很少。有的实现可以利用虚拟内存,有的则不能。规范本身对“运行时数据区”只有抽象的描述,这就使得JAVA虚拟机可以很容易得在各种计算机和设备上实现。
java虚拟机没有寄存器,其指令集使用java栈来存储中间数据。这样设计的原因使JAVA虚拟机的指令集尽量紧凑,同时也便于JAVA虚拟机在那些只有很少通用寄存器的平台上实现。另外,有助于虚拟机实现的动态编译器和即时编译的代码优化。
装载、连接以及初始化过程:
- 装载——查找并装载类型的二进制数据
- 连接——执行验证,准备以及解析(可选)
验证
确保被倒入类型的正确性。
准备
为类变量分配内存,并将其初始化为默认值。
解析
把类型中的符号引用转换为直接引用。
- 初始化——将类变量初始化为正确的初始值