java中類的加載和加載時機

(一)類的加載概述

 當程序要使用某個類時,如果該類還未被加載到內存中,則系統會通過加載,連接,初始化三步來實現對這個類進行初始化。

(1)加載 :指將class文件讀入內存,併爲之創建一個Class對象。任何類被使用時系統都會建立一個Class對象;

(2)連接:驗證 是否有正確的內部結構,並和其他類協調一致爲類的靜態成員分配內存,並設置默認初始化值;將類的二進制數據中的符號引用替換爲直接引用(解析)

(3)初始化。

(二)類的加載時機

(1)創建類的實例時;

(2)訪問類的靜態變量,或者爲靜態變量賦值;

(3)調用類的靜態方法;

(4)使用反射方式來強制創建某個類或接口對應的java.lang.Class對象;

(5)初始化某個類的子類;

(6)直接使用java.exe命令來運行某個主類。

現在瞭解到類的加載時機後,在來研究一下類的加載機制

加載機制依靠的是類加載器,

首先,什麼是類加載器?類加載器就是負責將.class文件加載到內存中,併爲之生成對應的Class對象。雖然我們不需要關心類加載機制,但是瞭解這個機制我們就能更好的理解程序的運行。

那麼在來研究一下類加載器都有哪些,作用分別是什麼?

(1)Bootstrap ClassLoader  根類加載器:也被稱爲引導類加載器,負責Java核心類的加載,比如System,String等。在JDK中JRE的lib目錄下rt.jar文件中。

(2)Extension ClassLoader 擴展類加載器:負責JRE的擴展目錄中jar包的加載。在JDK中JRE的lib目錄下ext目錄。

(3)Sysetm ClassLoader 系統類加載器:負責在JVM啓動時加載來自java命令的class文件,以及classpath環境變量所指定的jar包和類路徑。

以上是查閱好多資料和參考其他來源資料總結的理論知識,如有問題,請予以指導!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章