您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java類加載過程是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
Java文件從編碼到完成最終執(zhí)行的過程:
JVM虛擬機(jī)把.class文件中類信息加載進(jìn)內(nèi)存,并進(jìn)行解析生成對(duì)應(yīng)的class對(duì)象的過程。JVM不是一開始就把所有的類都加載進(jìn)內(nèi)存中,而是只有第一次遇到某個(gè)需要運(yùn)行的類時(shí)才會(huì)加載,且只加載一次。
把class字節(jié)碼文件從各個(gè)來源通過類加載器裝載入內(nèi)存中
JVM要完成三件事
類加載器
將java類的二進(jìn)制代碼合并到JVM的運(yùn)行狀態(tài)之中的過程
保證加載進(jìn)來的字節(jié)流符合虛擬機(jī)規(guī)范,不會(huì)造成安全錯(cuò)誤
驗(yàn)證分類
為類變量(注意,不是實(shí)例變量)分配內(nèi)存,并且賦予初值(Java虛擬機(jī)根據(jù)不同變量類型的默認(rèn)初始值)
默認(rèn)初始值
常量池內(nèi)的符號(hào)引用替換為直接引用的過程
符號(hào)引用:一個(gè)字符串,但是這個(gè)字符串給出了一些能夠唯一性識(shí)別一個(gè)方法,一個(gè)變量,一個(gè)類的相關(guān)信息
直接引用:可以理解為一個(gè)內(nèi)存地址,或者一個(gè)偏移量
舉個(gè)例子來說,現(xiàn)在調(diào)用方法hello(),這個(gè)方法的地址是1234567,那么hello就是符號(hào)引用,1234567就是直接引用
解析階段,虛擬機(jī)會(huì)把所有的類名,方法名,字段名這些符號(hào)引用替換為具體的內(nèi)存地址或偏移量,也就是直接引用
對(duì)類變量(static修飾的變量或語句)初始化,是執(zhí)行類構(gòu)造器的過程
初始化過程
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Java類加載過程是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。