JVM类加载器的作用和层次结构

类加载器的作用

1)通过一个类的全限定名来获取定义此类的二进制字节流。

2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。

3)在内存中生成一个代表这个类的java.lang.Class对象,这个对象存放在方法区中。这个对象将作为程序访问方法区中的这些数据的外部接口。

类加载器的层次结构

JVM类加载器的作用和层次结构_第1张图片

 

类加载器的结构如上所示,这里父加载器并不是通过继承关系来实现的,而是采用组合实现的,也就是说,虽然是父加载器,但并不是java中的extends。

从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器( Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分,另一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader

  • 启动类加载器(Bootstrap ClassLoader):C++实现,在java里无法获取,负责加载/lib下的类(比如object、string、list等类全部都在这里)。
  • 扩展类加载器(Extension ClassLoader): Java实现,可以在java里获

你可能感兴趣的:(深入了解JVM虚拟机,jvm,java,类加载器,JAVA,JVM)