JVM 的类加载机制就像是将类文件搬进 JVM 运行时的搬运工,通过加载、连接和初始化等阶段,确保类可以被正常使用,并执行验证、准备和解析等操作,保证程序的正确性和安全性。
方法区存放了类的结构信息、常量池以及类、实例构造函数和接口方法的字节码文件信息。类加载时机是基于“首次主动使用”的原则,只有在需要的时候才会进行类的加载操作,避免性能浪费。类加载全流程包括加载、连接和初始化三个步骤,将类的二进制数据转化为可执行的实体,并生成相关的 Class 对象,而这个 Class 对象也是后面我们要学习的反射的基础。类加载中的锁机制确保了类的全局唯一性和线程安全性。
JVM 中的类加载器家族,包括引导类加载器、扩展类加载器和应用类加载器。引导类加载器负责加载 Java 核心库,扩展类加载器负责加载 Java 扩展库,应用类加载器是系统默认的类加载器。
除了系统提供的类加载器,我们还可以自定义类加载器来满足特定的业务需求。
此外还有双亲委派模型的原则,就是当类加载器需要加载一个类的时候,会先委派给父类加载器,只有父类加载器没办法加载的时候,才由当前类加载器加载。这个模型保证了核心类库的安全性和类的一致性。同时,我们还了解了类加载器的演进,在不同的 JDK 版本中,类加载器也有所变化,比如引入模块系统和类数据共享等。
此文章为9月Day10学习笔记,内容来源于极客时间《云时代JVM实战 》,强烈推荐该课程











网友评论