ClassLoader类加载器

  常见的类加载器有BootStrapClassLoader<-ExtClassLoader<-AppClassLoader<-用户ClassLoader

BootStrapClassLoader:加载Java自带的核心类;

ExtClassLoader加载在/jre/lib/ext目录下的jar包,同样用户可以将jar放在该目录下。

AppClassLoader 加载classpath下面的内容,

加载过程:

读取文件并加载,首先申请父类的加载器进行加载,如果父类加载器无法加载,再由子类来加载,最终找不到该类,那么将会抛出ClassNotFoundException;

第二步,链接。对已经加载的字节码进行解析、校验,看是不是符合一定的规范,否则抛出ClassNotFoundError.然后实现内存的分配。

第三步,初始化。调用构造函数,对静态变量、static块初始化。

 

值得注意的是,在类加载的过程中,会阻塞多个线程。

其实ClassLoader本身就是Java类,而这些类是由JVM内核来实现加载。

 

相关文章:

  • 2021-07-11
  • 2022-03-04
  • 2021-12-31
  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
猜你喜欢
  • 2022-02-15
  • 2022-01-01
  • 2021-07-13
  • 2022-01-16
  • 2022-12-23
  • 2021-06-21
相关资源
相似解决方案