jvm有三種類載入器,一種使用者自訂載入器,從上到下分別是:
bootstrap classLoader 這類載入器在java虛擬機啟動時將jdk核心類別庫載入進內存
extension classLoader 擴充類別載入器,該類別載入器是載入jre的一些jar的類別庫
system classLoader 系統類別載入器,該類別載入器是載入classpath下面的指定類別庫到記憶體
custom classLoader 使用者自訂類別載入器,該類別載入器由程式設計師自己負責在程式運行期間,透過java.lang.classLoader的子類別來動態載入class檔案
載入機制:
java類別載入機制叫做雙親委託機制:就是當有請求向載入器請求類別時,首先會自底向上查詢該類別是否被載入到內存,如果被載入則直接返回該類,如果沒有,那麼先委託父類載入器載入該類,如果當前載入器還有父類,那再向上一級委託,直到頂層,只有當父類無法載入該類時,才會返回下一層直到自己加載,如果自己也無法加載,則返回類別找不到異常(ClassNotFoundException)。例如:當要求用使用者自訂載入器載入java.lang.String類別時,實際上用的是bootstrap classLoader載入的,因為java.lang.String是jdk的核心庫類,在使用者自訂載入時,會先委託父類別載入器。
以上是詳解JAVA開發之classLoader類別載入機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!