Java類加載過程是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了Java類加載過程是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比孝感網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式孝感網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋孝感地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

Java文件從編碼到完成最終執(zhí)行的過程:

  1. 編譯:Javac 把Java文件編譯成.class文件
  2. 運行:把.class文件交給JVM運行
類的加載過程

JVM虛擬機把.class文件中類信息加載進內(nèi)存,并進行解析生成對應(yīng)的class對象的過程。JVM不是一開始就把所有的類都加載進內(nèi)存中,而是只有第一次遇到某個需要運行的類時才會加載,且只加載一次。

Java類加載過程是什么

加載

把class字節(jié)碼文件從各個來源通過類加載器裝載入內(nèi)存中
JVM要完成三件事

  1. 通過一個類的全限定名來獲取定義此類的二進制字節(jié)流。
  2. 靜態(tài)存儲結(jié)構(gòu)- > 方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu)
  3. 在Java堆中生成對應(yīng)類的java.lang.Class對象,作為方法區(qū)訪問這些數(shù)據(jù)的訪問入口。

類加載器

  • 啟動類加載器
  • 擴展類加載器
  • 應(yīng)用類加載器
  • 自定義類加載器
連接

將java類的二進制代碼合并到JVM的運行狀態(tài)之中的過程

驗證

保證加載進來的字節(jié)流符合虛擬機規(guī)范,不會造成安全錯誤

驗證分類

  • 文件格式的驗證,比如常量中是否有不被支持的常量?文件中是否有不規(guī)范的或者附加的其他信息
  • 元數(shù)據(jù)的驗證,比如該類是否繼承了被final修飾的類?類中的字段,方法是否與父類沖突?是否出現(xiàn)了不合理的重載?
  • 字節(jié)碼的驗證,保證程序語義的合理性,比如要保證類型轉(zhuǎn)換的合理性。
  • 符號引用的驗證,比如校驗符號引用中通過全限定名是否能夠找到對應(yīng)的類?校驗符號引用中的訪問性(private,public等)是否可被當前類訪問?
準備

為類變量(注意,不是實例變量)分配內(nèi)存,并且賦予初值(Java虛擬機根據(jù)不同變量類型的默認初始值)

默認初始值

  • 8種基本類型的初值,默認為0
  • 引用類型的初值則為null
  • 常量的初值即為代碼中設(shè)置的值
  • final static tmp = 456
解析

常量池內(nèi)的符號引用替換為直接引用的過程

符號引用:一個字符串,但是這個字符串給出了一些能夠唯一性識別一個方法,一個變量,一個類的相關(guān)信息

直接引用:可以理解為一個內(nèi)存地址,或者一個偏移量

舉個例子來說,現(xiàn)在調(diào)用方法hello(),這個方法的地址是1234567,那么hello就是符號引用,1234567就是直接引用

解析階段,虛擬機會把所有的類名,方法名,字段名這些符號引用替換為具體的內(nèi)存地址或偏移量,也就是直接引用

初始化

對類變量(static修飾的變量或語句)初始化,是執(zhí)行類構(gòu)造器的過程

初始化過程

  • 初始化一個類的時候,其父類尚未初始化,則優(yōu)先初始化其父類
    - 同時包含多個靜態(tài)變量和靜態(tài)代碼塊,則按照自上而下的順序依次執(zhí)行

感謝你能夠認真閱讀完這篇文章,希望小編分享Java類加載過程是什么內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!

本文名稱:Java類加載過程是什么-創(chuàng)新互聯(lián)
文章位置:http://muchs.cn/article22/coidjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、響應(yīng)式網(wǎng)站自適應(yīng)網(wǎng)站、微信小程序、網(wǎng)站建設(shè)網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)