国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java類加載的過程詳解

Java類加載的過程詳解

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

這篇文章主要介紹了深入理解Java 類加載全過程的相關資料,小編覺得寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助

Java:類加載過程

Java類加載的過程詳解

 

1.加載――3件事

  • 1.通過全類名獲取定義此類的二進制字節流(eg:從jar、war中獲取);
  • 2.將字節流所代表的靜態存儲結構轉換為方法區的運行時數據結構;
  • 3.在內存中生成一個代表該類的Class對象,作為方法區這些數據的訪問入口。

 

2.連接

加載階段和連接階段的部分內容是交叉進行的,加載尚未結束,連接階段可能就開始運行了。

2.1.驗證

Java類加載的過程詳解

2.2.準備

準備階段:正式為類變量分配內存并設置類變量初始值的階段,這些內存在方法區分配。注意:

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

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

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

public static final int value=111 

2.3.解析

解析階段是虛擬機將常量池中的符號引用替換為直接引用的過程。

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

什么是符號引用?

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

* 在編譯時People類并不知道Language類的實際內存地址,因此只能使用符號org.simple.Language

 

3.初始化

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

對于< clinit >() 方法的調用,虛擬機會自己確保其在多線程環境中的安全性。因為 < clinit >() 方法是帶鎖線程安全,所以在多線程環境下進行類初始化的話可能會引起死鎖,并且這種死鎖很難被發現。

對于初始化階段,虛擬機嚴格規范了有且只有5中情況下,必須對類進行初始化:

  • 當遇到 new 、 getstatic、putstatic或invokestatic 這4條直接碼指令時,比如 new 一個類,讀取一個靜態字段(未被 final 修飾)、或調用一個類的靜態方法時。
  • 使用 java.lang.reflect 包的方法對類進行反射調用時 ,如果類沒初始化,需要觸發其初始化.
  • 初始化一個類,如果其父類還未初始化,則先觸發該父類的初始化。
  • 當虛擬機啟動時,用戶需要定義一個要執行的主類 (包含 main 方法的那個類),虛擬機會先初始化這個類。
  • 當使用 JDK1.7 的動態動態語言時,如果一個 MethodHandle 實例的最后解析結構為 REF_getStaticREF_putStaticREF_invokeStatic、的方法句柄,并且這個句柄沒有初始化,則需要先觸發器初始化。

 

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

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

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

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

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

    Java使用SAX解析xml的示例

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

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

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

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

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 精品一区二区av | 精品成人国产在线观看男人呻吟 | 国产精品久久久久久中文字 | 国产资源在线视频 | 精品久久久久国产 | 青青草视频在线免费观看 | www.爱色av.com| 日韩精品在线视频观看 | 国产精品射 | 国产a视频 | 中文字幕在线免费看 | 国产精品美乳一区二区免费 | h片观看| 亚洲一区二区av | 亚洲福利 | 午夜视频网 | 国产97在线 | 亚洲 | 一区二区在线 | 欧美一级片免费在线观看 | 亚洲激情综合 | 无码日韩精品一区二区免费 | 欧美日韩一区二区三区不卡视频 | 男插女青青影院 | 夜夜嗨av色一区二区不卡 | 亚洲视频免费在线观看 | 久久99精品久久久久久久青青日本 | 高清久久| 久久午夜精品 | av免费在线观看网站 | 亚洲自拍偷拍精品 | 亚洲福利电影 | 日韩精品视频久久 | 久久久久久久久久久高潮 | 久久久一二三 | 啊v视频| 免费一级在线观看 | 日韩中文字幕免费在线播放 | 午夜视频在线播放 | 精品av| 国产精品女同一区二区免费站 | 一区二区三区免费在线观看 |