1. 程式人生 > >classloader原理

classloader原理

ppc 抽象類 目錄 ots extc 模式 ssl 運行 委托

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原理