天天看點

雙親委派的了解

今天在看jvm的時候,将class檔案加載到記憶體的過程,被這個“雙親委派”搞暈了。縷了一下午,終于有所收獲,記錄一下:

梳理清晰之後,正确的了解應該是:

首先,一個類在剛開始被類加載器加載的時候,類加載器判斷是否加載過此類,

這個時候肯定是沒有加載的。

此時類加載器不會加載該類,

而是按照:自定義加載器1 -> 應用程式類加載器->擴充類加載器->啟動類加載器 的順序一層層的向上抛。

一直抛到BootstrapClassLoader。

BootstrapClassLoader表示也沒有加載過此類,并且也處理不了。這個時候再一層層的向下抛,

一直抛到能處理這個類的加載器。此時才加載此類。

該類再次被加載的時候(破壞雙親委派,例如自己寫一個java.lang.String),因為之前這個類已經被爸爸們加載過了,是以我們自己寫的這個類根本沒有機會得到加載。

這也是為什麼要使用雙親委派?為了安全

雙親委派的了解