雙親委派模型

2022-09-14 00:30:20 字數 827 閱讀 4156

從j**a虛擬機器的角度來講,只存在兩種不同的類載入器:一種是啟動類載入器(bootstrap classloader),這個類載入器使用c++語言實現,是虛擬機器自身的一部分;另一種就是所有其他的類載入器,這些載入器都是由j**a語言實現,獨立與虛擬機器外部,並且全部都繼承自j**a.lang.classloader。

從開發人員角度來看,類載入器還可劃分得更細緻一些,絕大部分j**a程式都會使用到以下3種系統提供的類載入器。啟動類載入器,擴充套件類載入器,應用程式類載入器。我們的應用程式都是由這3種類載入器互相配合進行載入的,如果沒有必要,還可以加入自己定義的類載入器。

類載入器雙親模型

雙親委派模型要求除了頂層的啟動類載入器外,其餘的類載入器都應當有自己的父類載入器。

雙親委派模型工作過程:如果乙個類載入器收到了類載入的請求,它首先不會自己去嘗試載入這個類,而是把請求委派給父類載入器去完成,每乙個層次的類載入器都是如此,因此所有的載入請求最終都應該傳送到頂層的啟動類載入器中,只有當父類載入器反饋自己無法完成這個載入請求時,子載入器才會嘗試自己去載入。

優點:j**a類隨著它的類載入器一起具備了一種帶有優先順序的層次關係;保證j**a程式的穩定運作。

實現:先檢查是否已經被載入過,若沒有載入則呼叫父載入器的loadclass()方法,若父載入器為空則預設使用啟動類載入器作為父載入器。如果父類載入失敗,丟擲classnotfoundexception異常後,再呼叫自己的findclass()方法進行載入。

參考文獻

《深入理解j**a虛擬機器》  機械工業出版社  周志明著

Java雙親委派模型

如果乙個類載入器收到了類載入請求,它首先不會自己去嘗試載入這個類,而是把類載入請求委派給父類載入器去完成 每一層的類載入器都把類載入請求委派給父類載入器,直到所有的類載入請求都應該傳遞給頂層的啟動類載入器 如果頂層的啟動類載入器載入器無法完成載入請求時,子類載入器嘗試去載入,如果連最初發起類載入請求...

類載入機制及雙親委派模型

虛擬機器把描述類的資料從class檔案載入到記憶體,並對資料進行校驗 轉換解析和初始化,最終形成可以被虛擬機器直接使用的j a型別 j a位元組碼 載入 連線 驗證 準備 解析 初始化 使用 解除安裝 有一篇部落格專門介紹過類的載入過程,這裡就不再詳細展開了,載入大致是通過類的全限定名獲取對應類的二...

JVM 雙親委派機制

雙親委派機制是在類載入的時候出現的一種機制 一 如果沒有第三方jar包 此時雙親委派機制的原理是 當對類進行載入的時候,會從系統類載入器 拓展類載入器 引導類載入器,一直向其父類尋找,呼叫的是父類的類載入器,此時的雙親委派機制是成功的。二 如果有第三方的jar包 如圖所示 由於引入了第三方的jar包...