Java中的类加载机制

加载、链接(验证 准备 解析)、初始化阶段

  • 加载:根据类的全限定名来获取此类的二进制字节流;将这个字节流表明的静态存储结构转化为方法区中的动态存储结构;在内存中生成一个表明这个类的java.lang.Class对象,做为方法区中这个类的访问入口。
  • 验证(链接):确保加载的类信息符合jvm规范,无安全方面的问题
  • 准备(链接):为类变量分配内存并设置初始值,分配的内存在方法区中
  • 解析(链接):将常量池中的符号引用转化为直接引用的过程
  • 初始化:初始化阶段是执行类构造器 clinit() 方法的过程。该方法是由编译器自动收集类中全部类变量的赋值动做和静态语句块合并产生。且保证子类的 clinit 调用以前会先调用父类的 clinit 方法。接口除外,若是一个类实现了接口,在执行该类的 clinit 方法,就不会执行接口的 clinit 方法。由于 clinit 方法能够不存在,好比接口没有静态语句块和类变量。
相关文章
相关标签/搜索