【補(bǔ)充】
按需裝載:(運(yùn)行時動態(tài)裝載)
1.裝載條件:當(dāng)一個類的靜態(tài)成員被第一次引用時,JVM就會去裝載它,包括【靜態(tài)方法-靜態(tài)屬性-構(gòu)造方法】,這里的構(gòu)造方法也就是老師視頻里提到使用new關(guān)鍵字實(shí)例化對象。
2.按需裝載流程:JVM會檢查該類的Class對象是否存在已經(jīng)加載,如果沒有,則執(zhí)行以下步驟。
1)加載:查找并導(dǎo)入類的字節(jié)碼,創(chuàng)建Class對象
2)鏈接:其中分為三步①校驗(yàn):檢查導(dǎo)入的字節(jié)碼的完整性,正確性、安全性。②準(zhǔn)備:為靜態(tài)域分配存儲空間③解析:將符號引用轉(zhuǎn)折為直接引用(非必需)
3)初始化:初始化靜態(tài)變量并執(zhí)行靜態(tài)域代碼
希望大家頂上去,讓更多人看到,幫助理解JVM類加載機(jī)制
按需裝載:(運(yùn)行時動態(tài)裝載)
1.裝載條件:當(dāng)一個類的靜態(tài)成員被第一次引用時,JVM就會去裝載它,包括【靜態(tài)方法-靜態(tài)屬性-構(gòu)造方法】,這里的構(gòu)造方法也就是老師視頻里提到使用new關(guān)鍵字實(shí)例化對象。
2.按需裝載流程:JVM會檢查該類的Class對象是否存在已經(jīng)加載,如果沒有,則執(zhí)行以下步驟。
1)加載:查找并導(dǎo)入類的字節(jié)碼,創(chuàng)建Class對象
2)鏈接:其中分為三步①校驗(yàn):檢查導(dǎo)入的字節(jié)碼的完整性,正確性、安全性。②準(zhǔn)備:為靜態(tài)域分配存儲空間③解析:將符號引用轉(zhuǎn)折為直接引用(非必需)
3)初始化:初始化靜態(tài)變量并執(zhí)行靜態(tài)域代碼
希望大家頂上去,讓更多人看到,幫助理解JVM類加載機(jī)制
2018-01-25
這里補(bǔ)充一下類的加載機(jī)制:
1.預(yù)先加載
這里有Java基礎(chǔ)類的加載和含main()函數(shù)類的加載。
Java類的加載流程:啟動程序→到j(luò)dk目錄下找到并載入jvm.dll→啟動虛擬機(jī)→初始化參數(shù)→創(chuàng)建BootStrap Loader對象,稱為啟動類裝載器,它會在虛擬機(jī)啟動時一次性加載JJVM的基礎(chǔ)類。
含main函數(shù)的類加載:BootStrap Loader裝載定義在sun.misc命名空間下的Launcher類。Launcher類有兩個內(nèi)部類,ExcClassLoader和AppClassLoader,含有main函數(shù)的類由AppClassLoader加載。
2.按需加載
篇幅有限下文補(bǔ)充。
1.預(yù)先加載
這里有Java基礎(chǔ)類的加載和含main()函數(shù)類的加載。
Java類的加載流程:啟動程序→到j(luò)dk目錄下找到并載入jvm.dll→啟動虛擬機(jī)→初始化參數(shù)→創(chuàng)建BootStrap Loader對象,稱為啟動類裝載器,它會在虛擬機(jī)啟動時一次性加載JJVM的基礎(chǔ)類。
含main函數(shù)的類加載:BootStrap Loader裝載定義在sun.misc命名空間下的Launcher類。Launcher類有兩個內(nèi)部類,ExcClassLoader和AppClassLoader,含有main函數(shù)的類由AppClassLoader加載。
2.按需加載
篇幅有限下文補(bǔ)充。
2018-01-25