类加载器子系统各阶段作用
- 类加载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识。
- ClassLoader只负责class文件的加载,至于它是否运行,则由Execution Engine决定。
- 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)
1 加载阶段
- 通过一个类的全限定类名获取定义此类的二进制字节流
- 将这个字节流所代表的静态存储结构转化为方法区(7之前永久代,7之后源空间)的运行时数据结构
- 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。
2 链接阶段
2.1 验证(Verify)
- 目的在于确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全。
- 主要包括四种验证;文件格式验证,元数据验证&