• JVM_类加载过程


    类加载过程

    类的加载分为五个过程:加载、验证、准备、解析、初始化

    其中验证、准备、解析并称为连接,故可简称为:加载、连接、初始化

    加载:
            通过类加载器将class文件(字节码)内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成代表这个类的Class对象(堆内)

    连接:

            验证:

                    确保加载的类的信息符合JVM规范,无安全方面的问题

            准备:

                    正式在方法区中为类变量(静态变量)及类方法(静态方法)分配内存,并设置类变量的默认初始值(普通变量的内存随类的实例化分配在堆内),执行静态代码块(先后顺序视代码编写顺序而定)

            解析:

                    虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)

    初始化:
            执行类构造器()方法,该方法由编译器自动收集类中所有类变量的赋值动作和类方法(部分类还存在静态代码块)合并产生

    注:

            类构造器用于构造类信息,区别于构造类对象的构造方法
            当初始化一个类的时候,若发现其父类尚未初始化,则需先将其父类初始化
            虚拟机会保证每一个类的()方法在多线程环境中被正确加锁和同步

    关于常量

            常量在编译阶段就已赋值。若为静态常量,则在准备阶段赋初始值时,为其赋设定值

  • 相关阅读:
    1.8-11:图像旋转
    28、Java高级特性——集合:Set接口、HashSet集合、Map接口、 Map集合
    Django--Learning and understanding
    python读取amazon s3上的文件到内存
    USB过压过流保护IC
    利用递归详解《汉诺塔游戏》
    消息中间的应用场景
    14.3.1 语法格式
    Python爬虫之Scrapy框架(CrawlSpider的简单使用)
    【WhatsApp营销】如何将WhatsApp与品牌的社交媒体营销相结合
  • 原文地址:https://blog.csdn.net/Mudrock__/article/details/126214719