類載入流程,類載入機制及自定義類載入器
1、載入
類載入指的是將類的class檔案讀入記憶體,併為之建立一個java.lang.Class物件。類的載入過程是由類載入器來完成,類載入器由JVM提供。我們開發人員也可以透過繼承ClassLoader來實現自己的類載入器。
1.1、載入的class來源
從本地檔案系統內載入class檔案
從JAR包載入class檔案
透過網路載入class檔案
把一個java原始檔動態編譯,並執行載入。
2、類的連結
透過類的載入,記憶體中已經建立了一個Class物件。連結負責將二進位制資料合併到 JRE中。連結需要透過驗證、準備、解析三個階段。
2.1、驗證
驗證階段用於檢查被載入的類是否有正確的內部結構,並和其他類協調一致。即是否滿足java虛擬機器的約束。
2.2、準備
類準備階段負責為類的類變數分配記憶體,並設定預設初始值。
2.3、解析
我們知道,引用其實對應於記憶體地址。思考這樣一個問題,在編寫程式碼時,使用引用,方法時,類知道這些引用方法的記憶體地址嗎?顯然是不知道的,因為類還未被載入到虛擬機器中,你無法獲得這些地址。
舉例來說,對於一個方法的呼叫,編譯器會生成一個包含目標方法所在的類、目標方法名、接收引數型別以及返回值型別的符號引用,來指代要呼叫的方法。
解析階段的目的,就是將這些符號引用解析為實際引用。如果符號引用指向一個未被載入的類,或者未被載入類的欄位或方法,那麼解析將觸發這個類的載入(但未必會觸發解析與初始化)。
3、類的初始化
類的初始化階段,虛擬機器主要對類變數進行初始化。虛擬機器呼叫方法,進行類變數的初始化。
java類中對類變數進行初始化的兩種方式:
在定義時初始化
在靜態初始化塊內初始化
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3034/viewspace-2797886/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自定義類載入器驗證類載入機制
- 探祕類載入器和類載入機制
- 虛擬機器類載入機制:類載入時機虛擬機
- 虛擬機器類載入機制_類載入的過程虛擬機
- 類載入機制
- 【JVM進階之路】十四:類載入器和類載入機制JVM
- Java基礎-類載入器以及載入機制Java
- 虛擬機器類載入機制_類載入時機和類的生命週期虛擬機
- .類載入器及雙親委派機制
- 類載入器及類的初始化流程
- 類檔案的結構、JVM 的類載入過程、類載入機制、類載入器、雙親委派模型JVM模型
- 類的載入機制
- JVM:類載入機制JVM
- JVM類載入機制JVM
- java類載入機制Java
- 【JAVA】自定義類載入器實現類隔離Java
- JVM之類載入器、載入過程及雙親委派機制JVM
- 虛擬機器類載入機制虛擬機
- 類載入機制總結
- 類載入機制與反射反射
- JVM-類載入機制JVM
- Tomcat類載入機制探析Tomcat
- java虛擬機器類載入機制Java虛擬機
- Java 虛擬機器類載入機制Java虛擬機
- 類載入-載入時機學習
- Java類載入機制總結Java
- JVM初探(三):類載入機制JVM
- JVM類載入機制小結JVM
- 談談 Java 類載入機制Java
- Flink 類載入機制介紹
- 類載入器(JVM)JVM
- 類載入
- Java虛擬機器(六):類載入機制Java虛擬機
- JVM(7)-虛擬機器類載入機制JVM虛擬機
- 虛擬機器系列 | JVM類載入機制虛擬機JVM
- JVM(五)----虛擬機器類載入機制JVM虛擬機
- JVM入門--類載入器JVM
- JVM 類載入機制及雙親委派模型JVM模型