-
类装载器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库被随意篡改。
-
-
类加载器ClassLoader(个人学习笔记)
最新推荐文章于 2022-08-16 17:31:13 发布
本文详细介绍了Java的类装载器ClassLoader的工作流程,包括加载、链接(验证、准备、解析)和初始化三个阶段。类加载机制遵循全盘负责、双亲委派和缓存机制,确保了系统的稳定性和安全性。此外,还探讨了类加载的优势,如防止核心API被篡改。
摘要由CSDN通过智能技术生成