虚拟机的体系结构
- 数据类型
分为两种:基本类型和引用类型。基本类型持有原始值,引用类型持有引用值
基本类型为:float、double、byte、short、int、long、char
boolean、returnAddress.
数据类型的取值范围
类装载器子系统
类装载器子系统顺序
1)装载–查找并装载类型的二进制数据。
2)链接–执行验证,准备,以及解析(可选)
验证: 确保被导入类型的正确性。
准备:为类变量分配内存,并将其初始化为默认值
解析:把类型中的符号引用转换为直接引用。
3)初始化 :把类变量初始化为正确的初始值方法区
java虚拟机中,关于被装载类型的信息存储在一个逻辑上被称为方法区的内存中。当虚拟机装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class文件。
当虚拟机运行java程序是,它会查存储在方法区中的类型信息。
方法区的大小不必是固定的,虚拟机可以动态调整。也不必是连续的,方法区可以在一个堆中自由分配。虚拟机允许用户或者程序员指定初始大小和最大最小。堆
java程序在运行时创建的所有类实例或者数组都放在同一个堆中。而一个JAVA虚拟机实例中只存在一个堆空间,即是说所有线程都共享这个堆。由于一个JAVA程序独占一个JAVA虚拟机实例,因而每个程序都有它自己的堆空间。垃圾收集
因为在虚拟机中有一条在堆中分配信对象的指令,却没有释放的指令。正如在JAVA中无法决定何时回收内存,虚拟机把这个任务交给了垃圾收集器。