jvm类的加载过程

类的加载过程

  1. 加载(Loading)

    通过一个类的全类名来获取类的二进制字节流存放在方法区。(主要组件,各种ClassLoader)

    官方一点的语言:

  2. 链接(Linking)

    1. 验证(Verification)

      校验字节码文件中的信息是否符合虚拟机要求,保证加载类的正确性。

    2. 准备(Preparation)

      为类变量(静态变量)分配内存并且设置该类变量的值为默认初始值及零值(比如int为0 boolean false)

      不会为实例变量分配初始值.

    3. 解析(Resolution)

      将常量池内的符号引用转换为直接引用的过程。//todo

  3. 初始化(Initialization)

​ 初始化就是执行类构造器方法clinit()的过程。(若该类有父类要先保证父类的clinit的方法执行完毕)

​ 初始化完成后才会会把链接时准备阶段的静态变量的值赋予它;

​ ‘clinit’方法在多线程中被同步加锁


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。邮件至 wcfinyourheart@163.com

文章标题:jvm类的加载过程

本文作者:wcf

发布时间:2020-05-28, 16:26:54

最后更新:2020-05-28, 16:26:40

原始链接:http://1007638786.github.io/2020/05/28/jvm%E7%B1%BB%E7%9A%84%E5%8A%A0%E8%BD%BD%E8%BF%87%E7%A8%8B/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏