jvm類加載器雙親委派模式

以下純屬個人理解,各位看管自行判斷:
在java中,有三個基本的類加載類型:
1. BootStrap ClassLoader,該加載器是以c++編寫的一個二進制字節碼的文件,存在與jre的lib包中的rt.jar中,在jvm啓動的時候,就會去加載該類
2. Extension ClassLoader,簡稱Ext,擴展類加載器,相當於java中的最底層類加載器,負責加載java.ext.dirs參數(默認值是%JAVA_HOME%\jre\lib\ext,可由VM參數-Djava.ext.dirs指定)指定路徑中的所有類庫
3. AppClassLoader,應用加載器,該類加載器由sun.misc.Launcher類的靜態內部類AppClassLoader實現

在所有的類加載器中,每個加載器都有一個默認的父類屬性(parent),在加載類的時候,java會自動根據該屬性查找parent的,一層一層往上查找,直到查找到Ext加載器。
第二步就是再從ext中查詢是否有符合需要的類加載器,再一層一層的往下查找。直到查到需要的類加載器,就終止搜索。

以下是比較標準的解釋:
如果一個類加載器收到了加載類的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委託給上級類加載器去完成,每一個層次的類加載器都是如此,所有加載器的加載請求最終都應該傳送至最頂層的類加載器中(擴展類加載器),只有當上級類加載器反饋自己無法完成這個加載請求(它的類加載範圍中沒有找到所需的類)時,下級類加載器纔會去嘗試自己加載這個類,這便是類加載器的上級委託機制

引用連接:http://blog.csdn.net/a19881029/article/details/17247165

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章