jvm如何載入一個類
第一步:載入,雙親委派:啟動類載入器(jre/lib),系統擴充套件類載入器(ext/lib),應用類載入器(classpath),前者為c++編寫,所以系統載入器的parent為空,後面兩個類載入器都是透過啟動類載入器載入完成後才能使用。載入的過程就是查詢位元組流,可以透過網路,也可以自己在程式碼生成,也可以來源一個jar包。另外,同一個類,被不同的類載入器載入,那麼他們將不是同一個類,java中透過類載入器和類的名稱來界定唯一,所以我們可以在一個應用成存在多個同名的類的不同實現。
第二步:連結:(驗證,準備,解析) 驗證主要是校驗位元組碼是否符合約束條件,一般在位元組碼注入的時候關注的比較多。準備:給靜態欄位分配記憶體,但是不會初始化,解析主要是為了將符號引用轉換為實際引用,可能會觸發方法中引用的類的載入。
第三步:初始化,如果賦值的靜態變數是基礎型別或者字串並且是final的話,該欄位將被標記為常量池欄位,另外靜態變數的賦值和靜態程式碼塊,將被放在一個叫cinit的方法內被執行,為了保證cinit方法只會被執行一次,這個方法會加鎖,我們一般實現單例模式的時候為保證執行緒安全,會利用類的初始化上的鎖。 初始化只有在特定條件下才會被觸發,例如new 一個物件,反射被呼叫,靜態方法被呼叫等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560357/viewspace-2644417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jvm類載入JVM
- [JVM]類載入JVM
- JVM 之類載入JVM
- 類載入器(JVM)JVM
- JVM-類載入JVM
- JVM是如何進行載入類的?JVM
- JVM入門--類載入器JVM
- Java jvm 類載入 反射JavaJVM反射
- JVM:類載入機制JVM
- JVM類載入機制JVM
- JVM類載入過程JVM
- 理解JVM(四):JVM類載入機制JVM
- 一夜搞懂 | JVM 類載入機制JVM
- JVM之類載入器ClassLoaderJVM
- Java-JVM-類載入器JavaJVM
- JVM-類載入機制JVM
- jvm類載入子系統JVM
- JVM系列(四) – JVM類載入機制詳解JVM
- JVM系列(四) - JVM類載入機制詳解JVM
- 【JVM進階之路】十四:類載入器和類載入機制JVM
- 一個Java類的載入Java
- JVM初探(三):類載入機制JVM
- JVM類載入機制小結JVM
- JVM-類載入子系統JVM
- JAVA-大白話探索JVM-類載入器(一)JavaJVM
- 每日一問:講講 JVM 的類載入機制JVM
- JVM學習(三)——類載入機制JVM
- JVM類載入器ClassLoader原始碼剖析JVM原始碼
- 玩命學JVM(二)—類載入機制JVM
- JVM之類載入機制總結JVM
- JVM(六):探究類載入過程-下JVM
- 徹底剖析JVM類載入機制JVM
- 【JVM】類載入器與雙親委派JVM
- JVM之類載入器子系統JVM
- 一道面試題搞懂JVM類載入機制面試題JVM
- 【JVM第2課】類載入子系統(類載入器、雙親委派)JVM
- 類檔案的結構、JVM 的類載入過程、類載入機制、類載入器、雙親委派模型JVM模型
- JVM核心之JVM執行和類載入全過程JVM