類加載機制和JVM內存模型

類加載機制和JVM內存模型

一.什麼是

class文件加載到jvm中運行

二.過程

1.裝載:找到在哪裏

(1)通過類的全限定路徑名找到類的二進制流 類裝載器:ClassLoader

 

保證類的唯一性,先頂層加載,最後輪到我才加載

(2)將字節流所代表的的靜態存儲結構轉化爲方法區的運行時數據結構

(3)代表當前類的java.lang.Class對象,放到jvm堆

2.鏈接

驗證:文件格式,元數據,字節碼,符號引用的驗證

準備:爲類的靜態變量分配內存,初始化爲默認值,方法區分配

解析:將類中的符號引用替換成直接引用

3.初始化

爲類的靜態變量,靜態代碼執行真正的初始化操作,比如a=9,a才能真正賦值爲9

三.JVM

堆:存儲對象,線程共享,生命週期和虛擬機一樣 OOM

方法區:存儲類信息,常量,靜態變量,即時編輯器編譯之後的代碼,被所有線程共享 OOM

--運行期常量池:用於存放編譯期生成的各種字面量和符號引用

虛擬機棧:線程是爲了執行方法,每個線程執行的方法就是一個一個棧幀,線程就是一個jvm棧,棧幀就是方法的執行

程序計數器:每個線程裏記錄當前方法執行的位置

native棧:調用C方法

 

四.棧中的方法調用過程

1.a調用b,b調用c

 

2.棧幀的執行過程

javap反解字節碼指令

 

 

 

五.jvm模型

 

 

 

 

 

 

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