一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java類加載的過(guò)程詳解

Java類加載的過(guò)程詳解

2021-12-20 13:51丟丟diu丟 Java教程

這篇文章主要介紹了深入理解Java 類加載全過(guò)程的相關(guān)資料,小編覺(jué)得寫(xiě)的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助

Java:類加載過(guò)程

Java類加載的過(guò)程詳解

 

1.加載――3件事

  • 1.通過(guò)全類名獲取定義此類的二進(jìn)制字節(jié)流(eg:從jar、war中獲取);
  • 2.將字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)換為方法區(qū)的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu);
  • 3.在內(nèi)存中生成一個(gè)代表該類的Class對(duì)象,作為方法區(qū)這些數(shù)據(jù)的訪問(wèn)入口。

 

2.連接

加載階段和連接階段的部分內(nèi)容是交叉進(jìn)行的,加載尚未結(jié)束,連接階段可能就開(kāi)始運(yùn)行了。

2.1.驗(yàn)證

Java類加載的過(guò)程詳解

2.2.準(zhǔn)備

準(zhǔn)備階段:正式為類變量分配內(nèi)存并設(shè)置類變量初始值的階段,這些內(nèi)存在方法區(qū)分配。注意:

1.這時(shí)候進(jìn)行內(nèi)存分配的僅包括類變量(static),而不包括實(shí)例變量,實(shí)例變量會(huì)在對(duì)象實(shí)例化時(shí)隨著對(duì)象一塊分配在 Java 堆中;

2.除了含有final修飾的變量外,其他都賦值0,null,false這種的。

如下例子, value 的值就被復(fù)制為 111,而不是0.

public static final int value=111 

2.3.解析

解析階段是虛擬機(jī)將常量池中的符號(hào)引用替換為直接引用的過(guò)程。

  • 也就是得到類或者字段、方法在內(nèi)存中的指針或者偏移量。

什么是符號(hào)引用?

* 比如org.simple.People類引用了org.simple.Language類;

* 在編譯時(shí)People類并不知道Language類的實(shí)際內(nèi)存地址,因此只能使用符號(hào)org.simple.Language

 

3.初始化

初始化是類加載的最后一步,也是真正執(zhí)行類中定義的 Java 程序代碼(字節(jié)碼),初始化階段是執(zhí)行類構(gòu)造器< clinit >()方法的過(guò)程。

對(duì)于< clinit >() 方法的調(diào)用,虛擬機(jī)會(huì)自己確保其在多線程環(huán)境中的安全性。因?yàn)?< clinit >() 方法是帶鎖線程安全,所以在多線程環(huán)境下進(jìn)行類初始化的話可能會(huì)引起死鎖,并且這種死鎖很難被發(fā)現(xiàn)。

對(duì)于初始化階段,虛擬機(jī)嚴(yán)格規(guī)范了有且只有5中情況下,必須對(duì)類進(jìn)行初始化:

  • 當(dāng)遇到 new 、 getstatic、putstatic或invokestatic 這4條直接碼指令時(shí),比如 new 一個(gè)類,讀取一個(gè)靜態(tài)字段(未被 final 修飾)、或調(diào)用一個(gè)類的靜態(tài)方法時(shí)。
  • 使用 java.lang.reflect 包的方法對(duì)類進(jìn)行反射調(diào)用時(shí) ,如果類沒(méi)初始化,需要觸發(fā)其初始化.
  • 初始化一個(gè)類,如果其父類還未初始化,則先觸發(fā)該父類的初始化。
  • 當(dāng)虛擬機(jī)啟動(dòng)時(shí),用戶需要定義一個(gè)要執(zhí)行的主類 (包含 main 方法的那個(gè)類),虛擬機(jī)會(huì)先初始化這個(gè)類。
  • 當(dāng)使用 JDK1.7 的動(dòng)態(tài)動(dòng)態(tài)語(yǔ)言時(shí),如果一個(gè) MethodHandle 實(shí)例的最后解析結(jié)構(gòu)為 REF_getStaticREF_putStaticREF_invokeStatic、的方法句柄,并且這個(gè)句柄沒(méi)有初始化,則需要先觸發(fā)器初始化。

 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/m0_38057941/article/details/120106993

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 亚洲视频在线观看免费 | 高h辣文小说网 烧书阁 | 色臀网站 | 日产精品一二三四区国产 | 黑人又大又硬又粗再深一点 | 99这里都是精品 | 小草观看免费高清视频 | 欧美成人中文字幕 | 色妞视频一级毛片 | 国产高清免费午夜在线视频 | 国内自拍成人网在线视频 | 女人国产香蕉久久精品 | 久久精品国产免费 | 成年私人影院免费视频网站 | 国产欧美日韩精品高清二区综合区 | 99re最新网址| 美女张开腿黄网站免费精品动漫 | 久久久GOGO无码啪啪艺术 | 特级一级全黄毛片免费 | 乳女教师欲乱动漫无修版动画3d | 日韩不卡一区二区三区 | 国产精品永久免费自在线观看 | 久久国产精品高清一区二区三区 | 精品一区二区三区在线成人 | 欧美视频在线播放观看免费福利资源 | 四虎国产精品视频免费看 | aⅴ天堂小视频 | 国产在线观看色 | 激情综合站 | 青青青国产精品国产精品久久久久 | 成人私人影院www片免费高清 | 青丝视频免费版在线看 | 无码射肉在线播放视频 | 99爱在线精品视频免费观看9 | 亚洲午夜视频 | 无耻之徒第十一季在线观看 | 国产精品久久久 | m3u8久久国产精品影院 | 日韩在线视频一区二区三区 | 大又大又粗又爽女人毛片 | 95视频在线观看在线分类h片 |