Java类加载机制

2024-06-22  本文已影响0人  jecyhw

类加载过程

类加载过程有:加载、连接(验证、准备、解析)、初始化、使用、卸载

  1. 加载:将class文件加载到方法区,然后在堆中生成对应的class对象
  2. 验证:对class静态结构进行验证,包括元数据、字节码进行验证,确保class是安全的
  3. 准备:对class中的静态属性赋默认值
  4. 解析:将符号引用解析成直接引用(静态解析,多态的动态解析是发生在初始化之后运行阶段)
  5. 初始化:主动资源初始化,对class中的成员变量、静态变量、静态代码块初始化


    类加载过程

类加载器

类加载器有:启动类加载器、扩展类加载器、应用程序类加载器、自定义类加载器

  1. 启动类加载器:加载核心类库的类,/jre/lib目录下的jar包
  2. 扩展类加载器:加载扩展库目录的类,/jre/lib/ext目录下的jar包
  3. 应用程序类加载器:当前java应用classpath中的类
  4. 自定义类加载器:继承ClassLoader,打破双亲委派,需要实现loadClass方法;否则实现findClass方法

双亲委派机制

类的加载满足双亲委派机制,每个类加载器收到类加载请求时,会先委派给父类加载器进行加载,当父类加载器无法加载类时,自己才会尝试去加载。

双亲委派模型的好处有:防止核心库被篡改;避免类的重复加载。


双亲委派机制
上一篇 下一篇

猜你喜欢

热点阅读