• 什么是类加载器,类加载器如何分类


    一、类加载器

    1.什么是类加载器

    类加载器:负责将.class文件(存储的物理文件)加载到内存中

    2.类加载时机:

    ① 创建类的实例(对象)

    ② 调用类的实例方法

    ③ 访问类或者接口的类变量,或者为该类变量赋值

    ④ 使用反射方法来强制创建某个类或接口对应的java.lang.Class对象

    ⑤ 初始化某个类的子类

    ⑥ 直接使用java.exe命令来运行某个主类

    3.类加载的过程

    加载:

    ① 通过一个类的全限定名获取定义此类的二进制流,即通过包名+类名,获取这个类,准备用流进行传输

    ② 将这个字节流所代表的静态存储结构转化为运行时数据结构,即将这个类加载到内存中

    ③ 在内存中生成一个代表这个类的java.lang.Class对象,任何类被使用时,系统都会为创建一个java.lang.Class对象,即加载完毕创建一个class对象

    验证:

    链接阶段的第一步,这一阶段为了确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机的自身安全,即文件中的信息是否符合虚拟机规范,有没有安全隐患

    准备:

    负责为类的类变量(被static修饰的变量)分配内存,并且设置默认初始化值,即初始化静态变量

    解析:

    将类的二进制数据流中的符号引用替换为直接引用,即本类中如果用到了其他的类,此时就需要找到对应的类

    初始化:

    根据程序员通过程序指定的主观计划去初始化类变量和其他资源,即静态变量赋值以及初始化其他资源

    statac String school=“中山大学”

    类加载过程小结:

    当一个类被使用的时候,才会被加载到内存

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

    二、类加载分类

    jdk9 以后,类加载器分类:

    启动类加载器(Bootstrap ClassLoader):虚拟机内置的类加载器

    平台类加载器(Platform ClassLoader):负责加载JDK一些特殊的模块

    系统类加载器(System ClassLoader):负责加载用户类路径上的所指定的类库

    jdk8 类加载器分类:

  • 相关阅读:
    js xlsx自定义样式导出
    Android:如何绘制View
    小笑授权系统V5.0开心版
    5. Longest Palindromic Substring
    使用逆滤波算法deconvwnr恢复图像回复图像时,产生了很多横竖条纹。解决办法
    两个线程交替执行的几种方式
    gRPC简介
    腾讯云服务器如何使用WooCommerce 应用镜像搭建电商独立网站
    【UniApp】-uni-app-传递数据
    网络的常见度量属性
  • 原文地址:https://blog.csdn.net/weixin_46665411/article/details/127646568