01. 類加載相關(guān)概念

Java虛擬機(jī)與程序的生命周期

在如下幾種情況下,Java虛擬機(jī)將結(jié)束生命周期

  • 執(zhí)行了System.exit()方法
  • 程序正常執(zhí)行結(jié)束
  • 程序在執(zhí)行過程中遇到了異?;蝈e(cuò)誤而異常終止
  • 由于操作系統(tǒng)出現(xiàn)錯(cuò)誤而導(dǎo)致Java虛擬機(jī)進(jìn)程終止

類的生命周期

1. 類生命周期.png

在Java代碼中,類型的加載(class interface enum)的加載、連接與初始化過程都是在程序運(yùn)行期間完成的

上圖是一個(gè)類的生命周期,后面會(huì)詳細(xì)對(duì)這個(gè)生命周期做介紹的

類加載

查找并加載類的二進(jìn)制數(shù)據(jù),把class文件加載到內(nèi)存

類連接

類連接又分為三個(gè)階段

  • 驗(yàn)證:確保被加載的類的正確性
  • 準(zhǔn)備:為類的靜態(tài)變量分配內(nèi)存,并將其初始化為默認(rèn)值
  • 解析:把類中的符號(hào)引用轉(zhuǎn)換為直接引用

類初始化

為類的靜態(tài)變量賦予正確的初始值

類加載、連接與初始化如圖所示

001.類的加載、連接與初始化.png

類的使用方式

Java程序?qū)︻惖氖褂梅绞娇煞譃閮煞N,主動(dòng)使用和被動(dòng)使用

主動(dòng)使用(七種)

  • 創(chuàng)建類的實(shí)例
  • 訪問某個(gè)類或接口的靜態(tài)變量,或者對(duì)該靜態(tài)變量賦值
  • 調(diào)用類的靜態(tài)方法
  • 反射(如Class.forName("com.test.Test"))
  • 初始化一個(gè)類的子類
  • Java虛擬機(jī)啟動(dòng)時(shí)被標(biāo)明為啟動(dòng)類的類(Test類包含main()方法,使用Java Test啟動(dòng))
  • JDK1.7開始提供的動(dòng)態(tài)語言支持,java.lang.invoke.MethodHandle實(shí)例的解析結(jié)果REF_getStatic,REF_putStatic,REF_invokeStatic句柄對(duì)應(yīng)的類沒有初始化,則初始化

除了以上七種情況,其他使用Java類的方式都被看作是對(duì)類的被動(dòng)使用,都不會(huì)導(dǎo)致類的初始化

所有的Java虛擬機(jī)實(shí)現(xiàn)必須在每個(gè)類或接口被Java程序"首次主動(dòng)使用"時(shí)才初始化他們

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java虛擬機(jī)整體篇幅如下: Java虛擬機(jī)基礎(chǔ)——1Java的內(nèi)存模型Java虛擬機(jī)基礎(chǔ)——2JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)...
    隔壁老李頭閱讀 2,962評(píng)論 1 16
  • 代碼編譯的結(jié)果從本地機(jī)器碼轉(zhuǎn)變?yōu)樽止?jié)碼,是存儲(chǔ)格式發(fā)展的一小步,確實(shí)編譯語言發(fā)展的一大步。 虛擬機(jī)把描述類的數(shù)據(jù)從...
    胡二囧閱讀 1,070評(píng)論 0 0
  • 虛擬機(jī)把描述類的數(shù)據(jù)從Class文件加載到內(nèi)存, 并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化, 最終形成可以被虛擬機(jī)直接使...
    好好學(xué)習(xí)Sun閱讀 1,387評(píng)論 0 3
  • 虛擬機(jī)把描述類的數(shù)據(jù)從Class文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直接使用的...
    丑人林宗己閱讀 663評(píng)論 0 2
  • 盼望著,盼望著,開學(xué)的日子終于來了,正式上班的日子到了。 昨夜的白酒擾了我本來就不怎么好的睡眠,久未早起的我終于爬...
    Helsa閱讀 103評(píng)論 0 1

友情鏈接更多精彩內(nèi)容