java类加载器-类加载的过程

本文详细阐述了Java类何时被加载到内存,以及类加载的五个关键步骤:加载、验证、准备、解析和初始化。讲解了类加载器如何操作class文件,并强调了类只有在实际使用时才会加载的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类加载器-类加载的过程

类加载器 java->class文件(编译后的字节码文件),负责将class文件加载进内存中

在这里插入图片描述

1.类在什么时候会被加载到内存中?

  • 触感见类的实例(对象)
  • 掉用类的类方法(静态方法)
  • 访问类活着呢接口的类变量,或者为该类变量赋值(静态变量)
  • 使用反射的方式来强制创建某个类或接口对应的java.lang.Class对象
  • 初始化某个类的子类(子类依赖父类)
  • 直接试用java.exe命令来运行某个主类

用到就加载,不用不加载

2.类加载过程

    1. 加载

      • 通过包名 + 类名,获取这个类,准备用流进行传输
      • 在这个类加载到内存中
      • 加载完毕创建一个class对象

    在这里插入图片描述
    2. 链接

    • 验证

      确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全

      (文件中的信息是否符合虚拟机规范有没有安全隐患)

    在这里插入图片描述

    • 准备

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

      (初始化静态变量)

在这里插入图片描述

  • 解析

    将类的二进制数据流中的符号引用替换为直接引用

    (本类中如果用到了其他类,此时就需要找到对应的类)

在这里插入图片描述

  1. 初始化

    根据程序员通过程序制定的主观计划去初始化类变量和其他资源

    (静态变量赋值以及初始化其他资源)

    在这里插入图片描述

  • 小结

    • 当一个类被使用的时候,才会加载到内存
    • 类加载的过程: 加载、验证、准备、解析、初始化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值