• 笔记:Class 的生命周期


    一、Class的生命周期

    1、加载:将.class 文件读取到内存,存放在方法区(Perm Gen),  最终产品是Class对象。

    2、验证:检查是否有正确数据结构。

    3、准备:JVM为Class的静态变量分配内存,并设置默认初始值。

    4、解析:把Class的二进制数据中的符号引用替换为直接引用。

    5、初始化:JVM为执行Class 的static 语句块。会先初始化其父类。

    6、使用

    7、卸载:Class对象不再被使用,从方法区移除。


    二、类加载器种类

    1、Bootstarp 根类加载器:  加载java.lang 包等核心类

    2、Extention 扩展类加载器:  加载 jre/lib/ext 下的类

    3、System 系统加载器:加载classpath 的类

    4、用户自定义加载器:用户自定义


    三、类初始化的时机

    以下动作导致类的初始化

    1、创建类的实例,可以是用 new、反射、clone、反序列化等

    2、调用类的static 方法、static 变量

    3、调用 Class.forName(" ClassName ") 等

    4、初始化类A的子类B,导致类A先被初始化

    5、JVM 表明为启动类的类。如命令 " java ClassA ",  ClassA 就是启动类


    以下动作不会导致类的初始化:

    1、调用类的 final static 变量a,如果a在编译时候就能确定值的

    2、调用ClassLoader.loadClass("className")

    3、初始化类A,不会初始化其实现的接口B

    3、初始化接口A,不会初始化其父接口B



  • 相关阅读:
    Oracle11g字典表
    python操作excel
    Linux基础
    Mysql的DML基本操作
    Mysq基本操作--DDL
    上传验证码
    验证码
    添加图像
    用cmd 添加 修改 删除数据库
    cmd命令提示符命令
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276302.html
Copyright © 2020-2023  润新知