Java 類裝載

java類裝載分為兩種方式:
(1)預(yù)先加載

(2)按需加載

由于可對(duì)類進(jìn)行預(yù)先加載,所以在程序啟動(dòng)時(shí),不需要將所有的類都加載到JVM中,只有需要時(shí)才會(huì)加載,即大部分類被延遲到要使用時(shí)才加載,這成為java運(yùn)行時(shí)的動(dòng)態(tài)加載機(jī)制。

Java基礎(chǔ)類是程序運(yùn)行的基礎(chǔ),采用的是預(yù)先加載的方式。



那么按需加載,具體是什么樣的條件才會(huì)去加載呢?

答:當(dāng)這個(gè)類的靜態(tài)成員被第一次引用時(shí),就會(huì)觸發(fā)按需加載。這個(gè)靜態(tài)成員包括:靜態(tài)方法,靜態(tài)屬性,構(gòu)造方法。

PS1:當(dāng)訪問常量靜態(tài)常量屬性時(shí),JVM加載類的過程不會(huì)進(jìn)行初始化的工作

PS2:盡管構(gòu)造方法沒有顯示聲明為靜態(tài)方法,但是仍被作為類的靜態(tài)成員特例,因此,使用new來構(gòu)造一個(gè)對(duì)象時(shí),JVM還是會(huì)加載這個(gè)類。

例子說明:

代碼如圖1,運(yùn)行結(jié)果如圖2

圖1


圖2

當(dāng)調(diào)用Test1的靜態(tài)常量屬性時(shí),并沒有執(zhí)行Test1的靜態(tài)域代碼,只有在new Test1時(shí),才進(jìn)行了初始化工作

?著作權(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將近五年來,雖然做過不少項(xiàng)目,也看過不少Java理論相關(guān)的文章和書籍,但是...
    會(huì)飛的pigeon閱讀 571評(píng)論 0 1
  • Java程序運(yùn)行時(shí),數(shù)據(jù)會(huì)分區(qū)存放,JavaStack(Java棧)、 heap(堆)、method(方法區(qū))。 ...
    Y了個(gè)J閱讀 821評(píng)論 0 15
  • 在Java虛擬機(jī)中,存在著多個(gè)類裝載器,稱為類裝載器子系統(tǒng)。一個(gè)Java程序可以使用兩種類裝載器,啟動(dòng)類裝載器和用...
    何幻閱讀 379評(píng)論 0 0
  • java類裝載器ClassLoader1.類裝載器的工作機(jī)制類裝載器就是尋找類的字節(jié)碼文件并構(gòu)造出類在JVM內(nèi)部表...
    小線亮亮閱讀 145評(píng)論 0 0
  • 一、負(fù)責(zé)加載class文件,class文件在文件開頭有特定的文件標(biāo)示,并且ClassLoader只負(fù)責(zé)class文...
    LiangYong閱讀 249評(píng)論 0 0

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