天天看點

JVM-類與類加載器-《深入了解Java虛拟機》學習筆記

類與類加載器

雙親委派模型
從 Java 虛拟機角度講,隻存在兩種類加載器:一種是啟動類加載器(C++ 實作,是虛拟機的一部分);另一種是其他所有類的加載器(Java 實作,獨立于虛拟機外部且全繼承自 java.lang.ClassLoader)
  1. 啟動類加載器

    加載 lib 下或被 -Xbootclasspath 路徑下的類

  2. 擴充類加載器

    加載 lib/ext 或者被 java.ext.dirs 系統變量所指定的路徑下的類

  3. 應用程式類加載器

    ClassLoader負責,加載使用者路徑上所指定的類庫。

    JVM-類與類加載器-《深入了解Java虛拟機》學習筆記

除頂層啟動類加載器之外,其他都有自己的父類加載器。

工作過程:如果一個類加載器收到一個類加載的請求,它首先不會自己加載,而是把這個請求委派給父類加載器。隻有父類無法完成時子類才會嘗試加載。

破壞型雙親委派
類加載機制和雙親委派機制

類加載機制就是虛拟機描述類的資料從Class檔案加載到記憶體,對其進行轉換解析,最後形成可以被虛拟機直接使用的Java類型,這就是類加載機制。

雙親委派機制就是對象接受請求後不會先嘗試自己去加載,而是委派給父類去加載,父類也不會直接加載,而是嘗試委派給父類去加載,最後都委派到頂層的啟動類加載器中,若頂層的啟動類加載器無法加載,就交給下一級,下一級加載不了再交給下一級,最後若自己無法加載則抛出異常。主要說就是有優先級的特點。