• JAVA-大白话探索JVM-类加载过程(二)


    首先我们知道JVM是什么以及类加载器的作用

    不清楚的可以看看
    JAVA-大白话探索JVM-类加载器(一)

    现在我们来摸索下类的加载过程


    首先,我们将类加载过程分为三步走

    1. 装载
    2. 链接
    3. 初始化

    其中 链接 分为三步骤

    图1

    1.装载

    • 通过一个类的全限定名获取其定义的二进制字节流
    • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
    • 在堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口

    2.链接

    1. 验证

      • 确保Class文件的字节流信息符合JVM的要求

      • 4个阶段校验(文件格式校验、元数据校验、字节码校验、符号引用校验)

      • 验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用-Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。

    2. 准备

      • 为类的静态变量(static)分配内存,并将其初始化为默认值
    3. 解析

      • 把类中的符号引用转换为直接引用

      • 符号引用就是一组符号来描述目标,可以是任何字面量。

      • 直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。

    3.初始化

    对类的静态变量,静态代码块执行初始化操作

    版权声明:本文为不会代码的小白原创文章,转载需添加小白地址 :https://www.ccode.live/bertonlee/list/7

    欢迎关注

    欢迎关注公众号“码上开发”,每天分享最新技术资讯

  • 相关阅读:
    JAVA调用WebService总结
    关于购物车的想法
    ASP.NET中初试Ajax
    转帖:从FxCop归纳出来的一些规范建议
    数据结构(二叉树)C#描述
    FormView控件和DetailsGridView控件实现MasterSlave
    在.NET中使用MySql数据库
    Oracle学习总结1
    Oracle学习总结2
    关于字符匹配所引起的的问题
  • 原文地址:https://www.cnblogs.com/xswz/p/10305950.html
Copyright © 2020-2023  润新知