什么是雙親委派機制和其作用


1.什么是類加載

  通過javac將.java文件編譯成.class字節碼文件后,則需要將.class加載到JVM中運行,哪么是誰將.class加載到JVM的呢?那就是類加載器啦。

2.類加載器類型

  • Bootstrap ClassLoader(啟動類加載器):該類加載器由C++實現的。負責加載Java基礎類,對應加載的文件是%JRE_HOME/lib/ 目錄下的rt.jar、resources.jar、charsets.jar和class等。
  • Extension ClassLoader(標准擴展類加載器):繼承URLClassLoader。對應加載的文件是%JRE_HOME/lib/ext 目錄下的jar和class等。
  • App ClassLoader(系統類加載器):繼承URLClassLoader。對應加載的應用程序classpath目錄下的所有jar和class等。
  • CustomClassLoader(用戶自定義類加載器):由Java實現。我們可以自定義類加載器,並可以加載指定路徑下的class文件。

3.什么是雙親委派機制

  雙親委派機制是當類加載器需要加載某一個.class字節碼文件時,則首先會把這個任務委托給他的上級類加載器,遞歸這個操作,如果上級沒有加載該.class文件,自己才會去加載這個.class

4.為什么叫雙親委派機制

  雙:代表是兩兩的意思。親:代表兩者之間有着千絲萬縷的關系。委派:則是我們個人辦不到的事情,委托別人去幫我們完成。總體來說,就是當子類加載器無法完成這件事時,則會委托父加載器去完成,當父加載器說這不是我做的事情時,則該任務又會落回到子類加載器,此時,子類加載器只能自己去完成該事情。通過上面的闡述,我們則可以明白為什么叫雙親委派機制了,兩兩之間相互委托對方。(以上純屬個人理解,如有錯誤之處,請指出

5.雙親委派的作用

  ①防止加載同一個.class。通過委托去詢問上級是否已經加載過該.class,如果加載過了,則不需要重新加載。保證了數據安全。

  ②保證核心.class不被篡改。通過委托的方式,保證核心.class不被篡改,即使被篡改也不會被加載,即使被加載也不會是同一個class對象,因為不同的加載器加載同一個.class也不是同一個Class對象。這樣則保證了Class的執行安全。

 


免責聲明!

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



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