国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

設(shè)計(jì)大神云集的網(wǎng)站是網(wǎng)絡(luò)推廣方法怎么樣

設(shè)計(jì)大神云集的網(wǎng)站是,網(wǎng)絡(luò)推廣方法怎么樣,重慶seo網(wǎng)站建設(shè)優(yōu)化,cen wordpress【JVM】類的生命周期 文章目錄 【JVM】類的生命周期1. 生命周期概述2. 加載階段3. 連接階段3.1 驗(yàn)證3.2 準(zhǔn)備3.3 解析 4. 初始化階段4.1 觸發(fā)初始化的方式4.2 clinit不存在的情況4.3 多個(gè)類的初始化 5. 總結(jié) 1. 生命周期概述 類的生命周期分為5/7個(gè)階段: 加載(Loa…

【JVM】類的生命周期

文章目錄

  • 【JVM】類的生命周期
    • 1. 生命周期概述
    • 2. 加載階段
    • 3. 連接階段
      • 3.1 驗(yàn)證
      • 3.2 準(zhǔn)備
      • 3.3 解析
    • 4. 初始化階段
      • 4.1 觸發(fā)初始化的方式
      • 4.2 clinit不存在的情況
      • 4.3 多個(gè)類的初始化
    • 5. 總結(jié)

1. 生命周期概述

類的生命周期分為5/7個(gè)階段:

  1. 加載(Loading)
  2. 連接(Linking)
    • 驗(yàn)證
    • 準(zhǔn)備
    • 解析
  3. 初始化(Initialization)
  4. 使用(Using)
  5. 卸載(Unloading)

2. 加載階段

  1. 加載(Loading)階段第一步是類加載器根據(jù)類的全限定名通過不同的渠道以二進(jìn)制流的方式獲取字節(jié)碼信息。
  2. 類加載器在加載完類之后,Java虛擬機(jī)會將字節(jié)碼中的信息保存到方法區(qū)中。
  3. 生成一個(gè)InstanceKlass對象,保存類的所有信息,里邊還包括實(shí)現(xiàn)特定功能比如多態(tài)的信息。
image-20231024230054185
  1. 同時(shí),Java虛擬機(jī)還會在堆中生成一份與方法區(qū)中數(shù)據(jù)類似的java.lang.Class對象。作用是在Java代碼中去獲取類的信息以及存儲靜態(tài)字段的數(shù)據(jù)(jdk8及之后)
image-20231024230311011

對于開發(fā)者來說,只需要訪問堆中的Class對象而不需要訪問方法區(qū)中所有信息。這樣Java虛擬機(jī)就能很好地控制開發(fā)者訪問數(shù)據(jù)的范圍。

image-20231024230504548


3. 連接階段

連接階段可以分為三個(gè)小階段:

  1. 驗(yàn)證:驗(yàn)證內(nèi)容是否滿足《Java虛擬機(jī)規(guī)范》
  2. 準(zhǔn)備:給靜態(tài)變量賦初值
  3. 解析:將常量池中的符號引用替換成指向內(nèi)存的直接引用

3.1 驗(yàn)證

連接(Linking)階段的第一個(gè)環(huán)節(jié)就是驗(yàn)證。驗(yàn)證的主要目的是檢測Java字節(jié)碼文件是否遵守了《Java虛擬機(jī)規(guī)范》中的約束。

主要包括4個(gè)部分(具體詳見 《Java虛擬機(jī)規(guī)范》):

  1. 文件格式驗(yàn)證:比如檢測字節(jié)碼文件是否以 CAFEBABE 開頭,主次版本號是否滿足當(dāng)前Java虛擬機(jī)版本要求。

  2. 元信息驗(yàn)證:比如類必須有父類(super不能為空)。

    image-20231024232536154

  3. 驗(yàn)證程序執(zhí)行指令的語義:比如方法內(nèi)的指令執(zhí)行中跳轉(zhuǎn)到不正確的位置。

  4. 符號引用驗(yàn)證:比如是否訪問了其他類中private的方法等。


3.2 準(zhǔn)備

準(zhǔn)備階段為靜態(tài)變量分配內(nèi)存并設(shè)置初始值,每一種基本數(shù)據(jù)類型和引用數(shù)據(jù)類型都有其初始值。

image-20231024232844953

final 關(guān)鍵字修飾的基本數(shù)據(jù)類型的靜態(tài)變量,在準(zhǔn)備階段直接會將代碼中的值進(jìn)行賦值。

image-20231024233113290


3.3 解析

解析階段主要是將常量池中的符號引用替換為直接引用。符號引用就是在字節(jié)碼文件中使用編號來訪問常量池中的內(nèi)容。

image-20231024233742347 image-20231024233754472

4. 初始化階段

  • 初始化階段會執(zhí)行靜態(tài)代碼塊中的代碼,并為靜態(tài)變量賦值。
  • 初始化階段會執(zhí)行字節(jié)碼文件中 clinit 部分的字節(jié)碼指令。
image-20231024235051409 image-20231024235108640 image-20231024235213775

我們發(fā)現(xiàn),將靜態(tài)代碼塊和靜態(tài)變量的相對位置發(fā)生變化時(shí),字節(jié)碼指令的位置也會發(fā)生變化。也就是說clinit方法中的執(zhí)行順序與Java中編寫的順序是一致的。


4.1 觸發(fā)初始化的方式

以下有幾種方式會導(dǎo)致類的初始化:

  1. 訪問一個(gè)類的靜態(tài)變量或者靜態(tài)方法。注意變量是final修飾的并且等號右邊是常量則不會觸發(fā)初始化。

    public static final value = 1;//不會觸發(fā)初始化,因?yàn)樵谶B接(準(zhǔn)備)階段就已經(jīng)賦值了。
    
  2. 調(diào)用 Class.forName(String className)

  3. new一個(gè)該類的對象。

  4. 執(zhí)行main方法的當(dāng)前類。

注:添加 -XX:+TraceClassLoading 參數(shù)可以打印出加載并初始化的類。


4.2 clinit不存在的情況

clinit指令在特定情況下不會出現(xiàn):

  1. 無靜態(tài)代碼塊且無靜態(tài)變量賦值語句。
  2. 有靜態(tài)變量的聲明,但是沒有賦值語句。
  3. 靜態(tài)變量的定義使用 final 關(guān)鍵字,這類變量會在準(zhǔn)備階段直接進(jìn)行初始化。

4.3 多個(gè)類的初始化

  • 直接訪問父類的靜態(tài)變量,不會觸發(fā)子類的初始化。
  • 子類的初始化 clinit 調(diào)用之前,會先調(diào)用父類的 clinit 初始化方法。
image-20231025001252181 image-20231025001305872

5. 總結(jié)

類的生命周期分為5個(gè)階段:

  1. 加載:根據(jù)類的全限定名把字節(jié)碼文件的內(nèi)容加載并轉(zhuǎn)換成合適的數(shù)據(jù)放入內(nèi)存種種那個(gè),存放在方法區(qū)和堆上。
  2. 連接
    • 驗(yàn)證:魔數(shù),版本號等驗(yàn)證,一般不需要程序員關(guān)注。
    • 準(zhǔn)備:為靜態(tài)變量分配內(nèi)存并設(shè)置初始值。
    • 解析:將常量池中的符號引用(編號)替換為直接引用(內(nèi)存地址)
  3. 初始化:執(zhí)行靜態(tài)代碼塊和靜態(tài)變量的賦值。
  4. 使用
  5. 卸載

注意要點(diǎn):

  1. 靜態(tài)變量使用 final 關(guān)鍵字修飾時(shí),賦值操作在準(zhǔn)備階段就完成了。
  2. 直接訪問父類的靜態(tài)變量不會觸發(fā)子類的初始化。
  3. 在子類的初始化 clinit 調(diào)用之前會先調(diào)用父類的 clinit 初始化方法。
  4. 添加 -XX:+TraceClassLoading 參數(shù)可以在控制臺打印出加載并初始化的類
http://aloenet.com.cn/news/31922.html

相關(guān)文章:

  • 怎樣增加網(wǎng)站收錄量谷歌瀏覽器引擎入口
  • 展示類網(wǎng)站建設(shè)qianhu微建站
  • 點(diǎn)網(wǎng)站出圖片怎么做網(wǎng)站開發(fā)培訓(xùn)
  • 沈陽網(wǎng)站建設(shè)培訓(xùn)學(xué)校怎么建網(wǎng)站教程圖解
  • 大型網(wǎng)站seo方案長沙網(wǎng)站推廣seo
  • 百度上做網(wǎng)站免費(fèi)嗎品牌運(yùn)營策劃方案
  • 邢臺人才網(wǎng)官網(wǎng)首頁下載優(yōu)化大師
  • dw網(wǎng)站建設(shè)流程游戲搜索風(fēng)云榜
  • dreamwave cs6建設(shè)php網(wǎng)站十大成功營銷策劃案例
  • 保定網(wǎng)站排名優(yōu)化直通車關(guān)鍵詞優(yōu)化
  • wordpress 送錢啦濟(jì)南網(wǎng)站優(yōu)化排名推廣
  • 鹽城做百度網(wǎng)站百度推廣服務(wù)費(fèi)3000元
  • 哪里有網(wǎng)站開發(fā)設(shè)計(jì)文章優(yōu)化關(guān)鍵詞排名
  • 做好網(wǎng)站建設(shè)通知seo行業(yè)崗位
  • 單頁面組合網(wǎng)站seo關(guān)鍵詞布局技巧
  • 公司官網(wǎng)站怎么搞南平seo
  • 找人做網(wǎng)站設(shè)計(jì) 哪個(gè)平臺可以找萬能的搜索引擎
  • 如何在本地搭建網(wǎng)站什么網(wǎng)站百度收錄快
  • wordpress章節(jié)分頁云浮seo
  • 網(wǎng)站頁面由什么構(gòu)成百度seo關(guān)鍵詞優(yōu)化公司
  • WordPress數(shù)據(jù)庫文章優(yōu)化大師客服電話
  • 優(yōu)化系統(tǒng)設(shè)置深圳網(wǎng)站建設(shè)推廣優(yōu)化公司
  • 坪山網(wǎng)站建設(shè)基本流程揭陽新站seo方案
  • 建設(shè)銀行網(wǎng)站怎么登陸不了了寧波網(wǎng)站排名優(yōu)化seo
  • 南平 建網(wǎng)站搜索引擎有哪些
  • mac能用vs做網(wǎng)站嗎百度收錄域名
  • 網(wǎng)站建設(shè)冒用身份信息什么是網(wǎng)絡(luò)推廣
  • 商業(yè)網(wǎng)站制作5188關(guān)鍵詞挖掘
  • asp網(wǎng)站配置偽靜態(tài)站長工具seo綜合查詢煙雨樓
  • 做宣傳冊從哪個(gè)網(wǎng)站找素材360搜索引擎優(yōu)化