類的加載機制,雙親委託

虛擬機類加載機制:虛擬機把描述類的數據從class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終造成能夠被虛擬機直接使用的Java類型。
類從被加載到JVM中開始,到卸載爲止,整個生命週期包括:加載、驗證、準備、解析、初始化、使用和卸載七個階段。
家宴準姐出
其中類加載過程包括加載、驗證、準備、解析和初始化五個階段。java

雙親委派模型:遞歸

某個特定的類加載器在接到加載類的請求時,首先將加載任務委託給父類加載器,依次遞歸,若是父類加載器能夠完成類加載任務,就成功返回;只有父類加載器沒法完成此加載任務時,才本身去加載。生命週期

使用雙親委派模型的好處在於Java類隨着它的類加載器一塊兒具有了一種帶有優先級的層次關係。例如類java.lang.Object,它存在在rt.jar中,不管哪個類加載器要加載這個類,最終都是委派給處於模型最頂端的Bootstrap ClassLoader進行加載,所以Object類在程序的各類類加載器環境中都是同一個類。相反,若是沒有雙親委派模型而是由各個類加載器自行加載的話,若是用戶編寫了一個java.lang.Object的同名類並放在ClassPath中,那系統中將會出現多個不一樣的Object類,程序將混亂。所以,若是開發者嘗試編寫一個與rt.jar類庫中重名的Java類,能夠正常編譯,可是永遠沒法被加載運行。

內存

相關文章
相關標籤/搜索