类加载器ClassLoader(个人学习笔记)

本文详细介绍了Java的类装载器ClassLoader的工作流程,包括加载、链接(验证、准备、解析)和初始化三个阶段。类加载机制遵循全盘负责、双亲委派和缓存机制,确保了系统的稳定性和安全性。此外,还探讨了类加载的优势,如防止核心API被篡改。
摘要由CSDN通过智能技术生成
  • 类装载器ClassLoader

    •  

    • 加载:将class文件加入内存,并创建一个java.lang.Class对象。JVM提供的类加载器通常被称为系统类加载器,除此之外,开发者可以通过继承ClassLoader来创建自己的类加载器。

    • 链接:将类的二进制数据加入合并到JRE中。类连接分三个阶段:

      • 验证:检验被加载的类是否有正确的内部结构,并和其他类协调一致。

      • 准备:类准备阶段负责为类的静态变量分配内存,并设置默认初始值。

      • 解析:将类的二进制数据中的符号引用替换成直接引用。(看不懂)

    • 初始化: 初始化是为类的静态变量赋予正确的初始值,准备阶段和初始化阶段看似有点矛盾,其实是不矛盾的,如果类中有语句:private static int a = 10,它的执行过程是这样的,首先字节码文件被加载到内存后,先进行链接的验证这一步骤,验证通过后准备阶段,给a分配内存,因为变量a是static的,所以此时a等于int类型的默认初始值0,即a=0,然后到解析(后面在说),到初始化这一步骤时,才把a的真正的值10赋给a,此时a=10。

  • 类加载机制:

    • 全盘负责:加载某个类时,同时加载这个类所依赖和引用的所有类。

    • 双亲委派:加载某个类时,先将加载任务交给其父类加载器,父类加载器无法完成时才自己加载。

    • 缓存机制:加载某个类时,先从缓存区查找该Class,不存在才加载。

      • 加载机制

      •  

      • 优势:防止核心API库被随意篡改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值