classloader原理
Posted 孤夏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了classloader原理相关的知识,希望对你有一定的参考价值。
1.classLoader的介绍及加载过程
与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。所以classLoader的目的在于把class文件装入到jvm中。
那么classLoader又在那里的啦?又由谁调用呢?其实classLoader只是jvm的一个实现的一部分。Jvm提供的一个顶级的classLoader(bootStrap classLoader),bootStrap classLoader负责加载java核心的API以满足java程序最基本的需求。Jvm还提供的两个classLoader,其中Extension ClassLoader负责加载扩展的Java class,Application ClassLoader负责加载应用程序自身的类。而Extension ClassLoader和Application ClassLoader则由bootStrap classLoader加载。
2.classLoader加载的基本流程
当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。
3.classLoader加载的方式
其实classLoader在加载class文件的时候就采用的双亲委托模式。每一个自定义ClassLoader都必须继承ClassLoader这个抽象类,而每个ClassLoader都会有一个parent ClassLoader,我们可以看一下ClassLoader这个抽象类中有一个getParent()方法,这个方法用来返回当前ClassLoader的parent。
以上是关于classloader原理的主要内容,如果未能解决你的问题,请参考以下文章