類與類加載器
雙親委派模型
從 Java 虛拟機角度講,隻存在兩種類加載器:一種是啟動類加載器(C++ 實作,是虛拟機的一部分);另一種是其他所有類的加載器(Java 實作,獨立于虛拟機外部且全繼承自 java.lang.ClassLoader)
-
啟動類加載器
加載 lib 下或被 -Xbootclasspath 路徑下的類
-
擴充類加載器
加載 lib/ext 或者被 java.ext.dirs 系統變量所指定的路徑下的類
-
應用程式類加載器
ClassLoader負責,加載使用者路徑上所指定的類庫。
JVM-類與類加載器-《深入了解Java虛拟機》學習筆記
除頂層啟動類加載器之外,其他都有自己的父類加載器。
工作過程:如果一個類加載器收到一個類加載的請求,它首先不會自己加載,而是把這個請求委派給父類加載器。隻有父類無法完成時子類才會嘗試加載。
破壞型雙親委派
類加載機制和雙親委派機制
類加載機制就是虛拟機描述類的資料從Class檔案加載到記憶體,對其進行轉換解析,最後形成可以被虛拟機直接使用的Java類型,這就是類加載機制。
雙親委派機制就是對象接受請求後不會先嘗試自己去加載,而是委派給父類去加載,父類也不會直接加載,而是嘗試委派給父類去加載,最後都委派到頂層的啟動類加載器中,若頂層的啟動類加載器無法加載,就交給下一級,下一級加載不了再交給下一級,最後若自己無法加載則抛出異常。主要說就是有優先級的特點。