JAVA類加載概述

一、類的加載概述和加載時機

1.加載概述

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

①加載

  • 就是指將class文件讀入內存,併爲之創建一個Class對象。任何類被使用時系統都會建立一個Class對象

②連接

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

③初始化

  • 默認初始化,構造函數初始化等

2.加載時機

  • 創建類的實例
  • 訪問類的靜態變量,或者爲靜態變量賦值
  • 調用類的靜態方法
  • 使用反射方式來強制創建某個類或接口對應的java.lang.Class對象
  • 初始化某個類的子類
  • 直接使用java.exe命令來運行某個類

二、類加載器

1.概述

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

2.分類

  • Bootstrap ClassLoader 根類加載器
  • Extension ClassLoader 擴展類加載器
  • System ClassLoader 系統類加載器

3.作用

  • Bootstrap ClassLoader 根類加載器

           也被成爲引導類加載器,負責JAVA核心類的加載

            比如System,String等,在JDK中JRE的lib目錄下rt.jar文件中

  • Extension ClassLoader 擴展類加載器

           負責JRE的擴展目錄中jar包的加載

           在JDK中JRE的lib目錄下ext目錄

  • System ClassLoader 系統類加載器

           負責在JVM啓動時加載來自java命令的class文件,以及classpath環境變量所指定的jar包和類路徑

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