天天看點

雙親委派機制背景加載過程作用

背景

Java源代碼被編譯器編譯成.class的位元組碼檔案,然後由ClassLoader負責将這些class檔案給加載到JVM中去生成對應Class對象

ClassLoader分為4層:

BootstrapClassLoader(啟動類加載器):核心類,java.lang.*

ExtClassLoader(标準擴充類加載器):jre等擴充類

AppClassLoader(系統類加載器):應用程式的主函數類

CustomClassLoader(使用者自定義類加載器):可加載指定路徑的類

加載過程

每次加載類時,先從最底層開始,檢查該類是否加載過,如果沒加載過并且存在父加載器,并在父加載器中執行這個過程,直到不存在父加載器。然後從最頂層開始嘗試加載,如果無法加載,則交給下一層加載。如果最底層也無法加載,就抛出異常

作用

1、避免類重複加載

2、保證安全,如果想要篡改一個核心類,但由于核心類會先由頂層ClassLoader加載,其他加載器會檢測到這個類已經被加載過,就不會重複加載