java 雙親委派機制 & 與打破


簡介

當某個類加載器需要加載某個.class文件時, 它首先把這個任務委托給他的上級類加載器,遞歸這個操作,如果上級的類加載器沒有加載,自己才會去加載這個類。

參考鏈接

https://www.jianshu.com/p/1e4011617650

類加載器類別

BootstrapClassLoader(啟動類加載器)

c++編寫,加載java核心庫 java.*,構造ExtClassLoader和AppClassLoader。由於引導類加載器涉及到虛擬機本地實現細節,開發者無法直接獲取到啟動類加載器的引用,所以不允許直接通過引用進行操作

ExtClassLoader (標准擴展類加載器)

java編寫,加載擴展庫,如classpath中的jre ,javax.*或者
java.ext.dir 指定位置中的類,開發者可以直接使用標准擴展類加載器。

AppClassLoader(系統類加載器)

java編寫,加載程序所在的目錄,如user.dir所在的位置的class

CustomClassLoader(用戶自定義類加載器)

java編寫,用戶自定義的類加載器,可加載指定路徑的class文件

雙親委派機制的作用

1、防止重復加載同一個.class。通過委托去向上面問一問,加載過了,就不用再加載一遍。保證數據安全。
2. 保證核心.class不能被篡改。通過委托方式,不會去篡改核心.class,即使篡改也不會去加載,即使加載也不會是同一個.class對象了。不同的加載器加載同一個.class也不是同一個Class對象。這樣保證了Class執行安全。

image

如何打破雙親委派機制

https://blog.csdn.net/cy973071263/article/details/104129163


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM