java類加載機制
阿新 • • 發佈:2017-09-15
分配 導入 動態 靜態代碼塊 參考 nbsp bootstra 語言 app
java中通過JVM加載類文件,類加載方式分為隱式加載和顯式加載。其中,隱式加載時通過new創建對象時,隱式的通過類加載器將相應的類文件加載到JVM中。顯式加載通過class.forName()顯式方式把所需的類文件加載到JVM中。
在java語言中,類的加載時動態的,並不是一次將所有的類文件都加載到JVM中,而是先將基礎類加載到JVM中,其他用戶類等需要時在加載到JVM中。
在java語言中,類可以分3類:系統類、擴展類和自定義類,針對這3類文件提供了不同的類加載器
Bootstrap Loader -- 負責加載系統類
ExtClass Loader -- 負責加載擴展類
AppClassLoader -- 負責加載應用類
類加載過程主要有如下幾步:(詳細部分可以參考《深入理解java虛擬機》)
1. 裝載 : 根據查找路徑找到相應的class文件,然後導入。
2. 鏈接: 鏈接可以分為3步
(1) 檢查: 檢查待加載的class文件的正確性
(2)準備: 將類中的靜態變量分配內存空間
(3)解析:將符號引用解析為直接引用
3. 初始化: 對靜態變量和靜態代碼塊執行初始化工作。
java類加載機制