1. 程式人生 > >JVM總括四-類加載過程、雙親委派模型、對象實例化

JVM總括四-類加載過程、雙親委派模型、對象實例化

jvm 地址 解析 img 指向 image pan 編譯 jvm內存

JVM總括四-類加載過程、雙親委派模型、對象實例化


一、 類加載過程

一定要註意每個過程執行的內容!!!!!!

技術分享圖片

1、Load:

  將編譯後的.class文件以二進制流的方式加載到JVM內存中,並轉化為特定的數據結構,用到的就是classLoad二類加載器。這個過程中校驗cafe babe魔法數常量池文件長度、是否有父類等。

2、Link:

  分為驗證、準備、解析三步。

  驗證:更為詳細的驗證,比如:final是否規範(二次賦值不規範)、static是否合理(靜態方法必須引用靜態變量)、類型是否正確。

  準備:靜態變量分配內存並設定默認值(靜態變量不賦值是有個默認值得),這個過程沒有對象實例化。

  解析:把類中的符號引用轉化為直接引用,完成內存結構布局。(符號引用轉化為直接引用:例如:test1() { test2(); },這裏test1調用test2方法就是符號引用,但實際test2()通過一個指針指向test2方法的內存地址,這個指針負責調用,它就是直接引用)。

3、Init:初始化推遲到實例對象執行,執行靜態代碼塊,為靜態變量賦予正確的初始值,遞歸初始化父類,執行構造器。(先執行靜態代碼塊,再執行靜態變量)。

二、雙親委派模型

JVM總括四-類加載過程、雙親委派模型、對象實例化