天天看點

雙親委派機制

JVM中存在三個預設的類加載器:

bootstrap ClassLoader、ExtClassLoader、AppClassLoader

  • BootStrapClassLoader是ExtClassLoader的⽗類加載器,預設負責加載%JAVA_HOME%lib下的 jar包和class⽂件。
  • ExtClassLoader是AppClassLoader的⽗類加載器,負責加載%JAVA_HOME%/lib/ext⽂件夾下的 jar包和class類。
  • AppClassLoader是⾃定義類加載器的⽗類,負責加載classpath下的類⽂件。

AppClassLoader的⽗加載器是ExtClassLoader,ExtClassLoader的⽗加載器是 BootstrapClassLoader。

雙親委派機制
  • 如果一個類加載器收到類加載請求,它并不會自己先去加載,而是把這個請求委托給父類加載器去執行。
  • 如果父類還存在父類,則進一步委托,依次遞歸,直到到達啟動類加載器。
  • 如果父類加載器能完成,則成功傳回,不能完成則子類才會嘗試自己去加載。
  • 避免類的重複加載
  • 避免了java的核心API被篡改

繼續閱讀