1 概述
2 工作原理
3 圖例和類載入器介紹
4 **演示
5 優勢
** :
j**a虛擬機器堆class檔案採用的是按需載入的方式,也就是說當需要使用該類時才會將他的class檔案載入到記憶體生成class物件,而且載入某個類的class檔案時,j**a虛擬機器採用的是雙親委派機制,即把請求交由父類處理,他是一種任務委派模式
如果乙個類載入器收到了類載入的請求,它並不會自己先去載入,而是把這個請求委託給父類的載入器去執行;
如果父類載入器還存在其父類載入器,則進一步向上委託,依次遞迴,請求最終將到達頂層的啟動類載入器;
如果父類載入器可以完成類載入任務,就成功返回,倘若父類載入器無法完成次載入任務,子類載入器才會嘗試自己去載入,這就是雙親委派模式;
/*控制台輸出:
錯誤: 在類 j**a.lang.string 中找不到 main 方法, 請將 main 方法定義為:
public static void main(string args)
原因是:
j**a.lang.string 類由 引導類載入器 bootstrap classloader 載入, 實際載入的不是自定的string類,而是jdk類庫中的string類,
所以靜態**塊未執行,
並且jdk中的string類沒有main方法,所以報錯
*/}
package j**a.lang;保護程式安全,防止核心api被隨意篡改/*** @classname mytest
* @description
* @author xiaodu
* @date 2020/7/9 10:45
**/public class mytest
/*控制台輸出:
j**a.lang.securityexception: prohibited package name: j**a.lang
at j**a.lang.classloader.predefineclass(classloader.j**a:662)
...原因:
引導類載入器 bootstrap classloader,不允許自定義的類使用j**a.lang包名,出於對核心api的保護
*/}
沙箱安全機制: 自定義string類,但是在載入自定義string類時會率先使用引導類載入器載入,而引導類載入器在載入工程中,會先載入jdk自帶的檔案(rt.jar包中的j**a/lang/string.class),報錯資訊說沒有main方法,就是因為載入的rt.jar中的string類,這樣可以保護對j**a核心源**的保護,這就是沙箱安全機制
JVM 雙親委派機制
雙親委派機制是在類載入的時候出現的一種機制 一 如果沒有第三方jar包 此時雙親委派機制的原理是 當對類進行載入的時候,會從系統類載入器 拓展類載入器 引導類載入器,一直向其父類尋找,呼叫的是父類的類載入器,此時的雙親委派機制是成功的。二 如果有第三方的jar包 如圖所示 由於引入了第三方的jar包...
JVM雙親委派機制
首先我們要了解什麼是類載入器,說白了就是 把類通過類載入器載入到jvm中,然後轉換成class物件 通過類的全路徑來找到這個類 雙親委派機制,意思就是 這有乙個類,但是他自己的類載入器不去載入,而是讓其父類載入器載入 讓上級載入器載入 只有當父類載入器找不到這個類的時候,子類載入器才會去載入 那麼 ...
什麼是雙親委派機制?
雙親委派機制 雙親委派機制是指當乙個類載入器收到乙個類載入請求時,該類載入器首先會把請求委派給父類載入器。每個類載入器都是如此,只有在父類載入器在自己的搜尋範圍內找不到指定類時,子類載入器才會嘗試自己去載入。雙親委派模型工作工程 2.當extension classloader收到乙個類載入請求時,...