JAVA中有哪几种类加载器呢?
下文讲述java中类加载的方法分享,如下所示:
它负责将 /lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中
启动类加载器 bootstrap class loader
启动类加载器主要加载的是JVM自身需要的类,这个类加载是用C++语言实现的,是虚拟机自身的一部分它负责将 /lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中
注意事项: 1.由于虚拟机是按照文件名识别加载jar包的 如servlet-jsp.jar,当文件名不能被JVM虚拟机识别时,则无法实现此方式的加载 2.此模式通常只加载(包名为java、javax、sun等开头的类)
扩展类加载器 extensions class loader
它负责加载JAVA_HOME/lib/ext目录下或者由系统变量-Djava.ext.dir指定位路径中的类库,开发者可以直接使用标准扩展类加载器。应用程序类加载器 application class loader
应用程序加载器是指 Sun公司实现的sun.misc.Launcher$AppClassLoader。它负责加载系统类路径java -classpath或-D java.class.path 指定路径下的类库,也就是我们经常用到的classpath路径,开发者可以直接使用系统类加载器,一般情况下该类加载是程序中默认的类加载器,通过ClassLoader#getSystemClassLoader()方法可以获取到该类加载器。自定义类加载器 java.lang.classloder
自定义类加载器需要继承java.lang.ClassLoader类加载器之间的关系
- 启动类加载器,由C++实现,没有父类
- 拓展类加载器(ExtClassLoader),由Java语言实现,父类加载器为null
- 系统类加载器(AppClassLoader),由Java语言实现,父类加载器为ExtClassLoader
- 自定义类加载器,父类加载器肯定为AppClassLoader
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。