类加载过程

作者: Mr_Elliot | 来源:发表于2019-07-02 13:10 被阅读0次

    任何程序都需要加载到内存才能与CPU进行交流

    字节码 .class 文件同样需要加载到内存中,才可以实现实例化。

    ClassLoader就是提前加载 .class 类文件到内存中。在加载类的时候,使用的是parent Delegation Model,双亲委派模型

    Java的类加载器是一个运行时核心基础设施模块 主要是在启动之初进行类的Load Link 和init (加载、链接、初始化)

    第一步:Load阶段读取类文件产生的二进制流,并转化为特定的数据结构,初步校验cafe babe 魔法书、常量池、文件长度、是否有父类,然后创建对应的Java.lang.Class实例
    第二步:Link阶段包括验证、准备、解析三个步骤。验证是更详细的校验,比如final是否合规、类是否正确、静态变量是否合理等;准备阶段是为静态变量分配内存,并设定默认值,解析类和方法确保类与类之间的相互引用的正确性,完成内存结构布局
    第三步:Init 阶段执行类构造器<clinit> 方法,如果赋值运算是通过其他类的静态方法来完成的,那么马上解析另外一个类,在虚拟机栈中执行完毕后通过返回值进行赋值。

    相关文章

      网友评论

        本文标题:类加载过程

        本文链接:https://www.haomeiwen.com/subject/deszcctx.html