类加载器【理解】
類加載器的作用
-
負責將.class文件加載到內存中,并為之生成對應的 java.lang.Class 對象。雖然我們不用過分關心類加載機制,但是了解這個機制我們就能更好的理解程序的運行!
JVM的類加載機制
-
全盤負責:就是當一個類加載器負責加載某個Class時,該Class所依賴的和引用的其他Class也將由該類加載器負責載入,除非顯示使用另外一個類加載器來載入
-
父類委托:就是當一個類加載器負責加載某個Class時,先讓父類加載器試圖加載該Class,只有在父類加載器無法加載該類時才嘗試從自己的類路徑中加載該類
-
緩存機制:保證所有加載過的Class都會被緩存,當程序需要使用某個Class對象時,類加載器先從緩存區中搜索該Class,只有當緩存區中不存在該Class對象時,系統才會讀取該類對應的二進制數據,并將其轉換成Class對象,存儲到緩存區
Java中的內置類加載器
-
Bootstrap class loader:它是虛擬機的內置類加載器,通常表示為null ,并且沒有父null
-
Platform class loader:平臺類加載器可以看到所有平臺類 ,平臺類包括由平臺類加載器或其祖先定義的Java SE平臺API,其實現類和JDK特定的運行時類
-
System class loader:它也被稱為應用程序類加載器 ,與平臺類加載器不同。 系統類加載器通常用于定義應用程序類路徑,模塊路徑和JDK特定工具上的類
-
類加載器的繼承關系:System的父加載器為Platform,而Platform的父加載器為Bootstrap
ClassLoader 中的兩個方法
-
方法分類
方法名說明 static ClassLoader getSystemClassLoader() 返回用于委派的系統類加載器 ClassLoader getParent() 返回父類加載器進行委派 -
示例代碼
?
總結