类从编译到执行的过程

【JVM】ClassLoder (双亲委派机制)

ClassLoader

通过ClassLoader类加载器把class文件加载到JVM内存中,生成class对象【如何加载.class文件
loadClass() :加载到类,返回实例
种类
【JVM】ClassLoder (双亲委派机制)
ExtClassLoader:getExtDirs()查询路径中需要的class文件,加载
AppClassLoader:加载classpath目录下定义的class

自定义ClassLoader的实现

findClass(String):加载字节码
defineClass(byte[]):解析字节码返回对象
ClassLoader的源码

类加载器的双亲委派机制

  1. 加载一个类时,首先查看当前ClassLoader有没有加载过(加载过即表示之前加载过并放放置在缓存中了,查看缓存中有没有)getClassLoader()
  2. 若加载过则直接返回;否则查看其父类 getClassLoader().getParent()有没有加载过此类,层层递归直到顶层,加载过就返回
  3. 若还没有找到,则让当前ClassLoader执行真正的加载过程

【JVM】ClassLoder (双亲委派机制)
优势

  • 提高了类加载的效率
  • 系统类被提前加载,提高了系统的安全性

为什么要使用双亲委派机制去加载类

避免多份同样字节码的加载

补充学习点

深入理解ClassLoader工作机制(jdk1.8)
ClassLoader 详解及用途

注:以上图片来源:慕课-翔仔

相关文章:

  • 2021-12-21
  • 2021-09-10
  • 2022-02-16
  • 2022-02-07
  • 2022-12-23
  • 2023-03-07
  • 2022-01-16
  • 2021-06-07
猜你喜欢
  • 2021-11-26
  • 2021-05-11
  • 2021-10-31
  • 2021-06-06
  • 2021-07-25
相关资源
相似解决方案