classloader(1)
java 中的ClassLoader 用于动态加载java程序运行时所需要的资源:包括要装配进jvm的class字节码文件以及一些其他资源文件。
Java中的几种ClassLoader
BootStrapClassLoader
关于BootStrapClassLoader的作用
java里class是被java.lang.ClassLoader加载的,那么,问题是,谁来加载ClassLoader呢?
–>>There is where the bootstrap or primordial class loader comes into play.
BootStrapClassLoader 是其他CLassLoder的顶级parent,其实现是jvm的一部分,被编写在jvm本地代码中,并不以class的形式存在java里,因此它也会随着jvm的不同而不同。并且在java里面被代表为null。
BootstrapCLassLoader负责加载:
java8以及之前:
- jdk的核心类,比如
%JAVA_HOME%/jre/lib
下的rt.jar
和其中的其他核心库。
java9模块化之后:
- 这些核心类库以一种更加高效的方式存储在
%JAVA_HOME%/lib
下面(关于这个目录下一些文件的作用。。。) - BootstrapClassLoader加载的模块(一部分):
1 |
|
PlatForm ClassLoader(Extension ClassLoader)
加载jdk 其他core类库,以供所有application使用
**java8及以前: **
- 加载
%JAVA_HOME%/jre/lib/ext
下的jar以及java.ext.dirs
system propertry指定的目录下的jar
java9
PlatformClassLoader加载的模块(一部分):
1 |
|
SystemClassLoader
用于加载类路径以及模块路径上的应用级别的class。
java8及以前: 命令行的 : java [-classpath|-cp] /path/to/classes:/path/to/lib/* package.to.MainClass
java9以后还可以: java --module-path /path/to/modules -m mainModule/package/to/MainClass
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 居云岫!
评论