美文网首页工作生活
jvm(一):java的类加载机制

jvm(一):java的类加载机制

作者: 归来依旧少女 | 来源:发表于2019-07-07 18:32 被阅读0次

    一、类生命周期

    java代码经过编译生成.class二进制文件,通过类加载器加载到jvm中运行,最后不需要的时候被回收,这是一个jvm整体运行的一个情况。

    jvm运行.png

    类加载进jvm后又经过怎么一个过程呢?


    类加载的过程.png

    加载:一个类什么时候加载进来呢?在使用它的时候才会加载进来,比如main方法里面调用。加载的时候如果当前类有父类,需要将父类也加载进来。

    验证:必要的数据检验。检查是否合法啊,可能字节码里被可以篡改了。

    准备:给类分配空间,以及静态变量分配空间并赋初始值。

    解析:将符号引号替换为直接引用。

    初始化:给静态变量赋值正确的初始值。

    二、类加载器

    java的类加载器分为启动类加载器、扩展类加载器、应用类加载器、自定义加载器。


    类加载器.png
    • 启动类加载器:负责加载/jre/lib下的核心类库
    • 扩展类加载器:负责加载/jre/lib/ext下的类库
    • 应用类加载器:可以认为是加载自己写的类
    • 自定义加载器:也可以自己定义加载类的规则

    三、双亲委派机制

    当加载类的时候,不是直接自己进行加载,而是问父加载器能不能加载,一直向上询问,直到根加载器,当父加载器不能加载的时候再向下进行尝试加载。
    意义:防止出现同样多份的字节码。

    相关文章

      网友评论

        本文标题:jvm(一):java的类加载机制

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