【JVM學習筆記】雙親委托機制存在的意義


1.可以確保Java核心庫的類型安全:所有的Java應用都至少會引用java.lang.Object類,也就是說在運行期,java.lang.Object這個類會被加載到Java虛擬機;如果用戶自定義的類加載器可以加載Object類,那么很可能就會在JVM中存在多個版本的java.lang.Object類,而且這些類之間還是不兼容的,相互不可見的(正是命名空間在發揮着作用)。借助於雙親委托機制,Java核心類庫中的類加載工作都是由啟動類加載器來同意完成加載工作,從而確保了Java應用所使用的都是同一個版本的Java核心類庫,他們之間是相互兼容的;

2.可以確保Java核心類庫所提供的類不會被自定義的類所替代。假設我們自己定義了一個java.lang.Object,這個類是無法被加載到JVM中的,因為系統啟動時,首先會由啟動類加載器加載rt.jar包中的java.lang.Object,之后我們的類在被加載時會因為名字相同而被認為是已經加載過了,不會進行加載。  

3.不同的類加載器可以為相同名稱(binary name)的類創建額外的命名空間,相同名稱的類可以並存在Java虛擬機中,只需要用不同的類加載器來加載它們即可。不同的類加載器所加載的類是不兼容的,這相當於在JVM中創建了一個又一個相互隔離的Java類空間,這類技術在很多框架中都得到了實際應用(比如OSGI)


免責聲明!

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



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