虚拟机的加载机制详解

  • 来源:
  • 更新日期:2018-05-22

摘要:类加载的时机:类从被加载到虚拟机内存开始、到卸载为止、它的整个生命周期包括:加载(loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段其中验证、准备、解析3个部分统称为链接(Linking)。

 类加载的时机:类从被加载到虚拟机内存开始、到卸载为止、它的整个生命周期包括:加载(loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段其中验证、准备、解析3个部分统称为链接(Linking)。

有5种情况必须对类进行初始化
遇到new对象,类的静态字段
03K58PIC7hw.jpg
对类进行反射调用
父类没初始化
虚拟机启动时用户需要指定一个要执行的主类
加载:1.通过类的全限定名来获取定义此类的二进制字节流
2.将字节流所代表的静态存储结果转化为方法区的运行时数据
3.在内存中生成一个代表这个Class对象,作为方法区作为这个类的各种数据的访问入口
验证:验证时连接的第一个阶段保证Class文件字节流包含的信息符合当前虚拟机的要求不会危害虚拟机自身的安全。
准备:正式为类变量分配内存并设置类变量初始值阶段这时候内存分配仅包括被static修饰的变量不包括实例变量。
解析:虚拟机将常量池的符号引用替换为直接引用(可以直接指向目标的指针)类或接口解析字段解析和类方法解析。
初始化:初始化5中情况
类加载器:启动类加载器C++实现负责lib 目录JVM识别的jar
扩展类加载器libext目录类库
应用类加载器负责ClassPath上的类库
以上就是小编对于虚拟机加载机制的详细介绍。