最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java類型生命周期的詳細解析

 更新時間:2013年08月16日 09:27:56   作者:  
以下是對java中的類型生命周期進行了詳細的分析介紹,需要的朋友可以過來參考下

開始階段

裝載:把二進制形式的java類型讀入jvm中。
1)通過該類型的完全限定名,產(chǎn)生一個代表該類型的二進制數(shù)據(jù)流;
2)解析這個二進制數(shù)據(jù)流為方法區(qū)內(nèi)的內(nèi)部數(shù)據(jù)結(jié)構;
3)創(chuàng)建一個表示該類型的java.lang.Class類的實例;

連接:把已讀入的類型數(shù)據(jù)合并到虛擬機的運行時狀態(tài)中。
1)驗證:確保java類型數(shù)據(jù)格式正確并且適用于jvm使用;
2)準備:為該類型分配內(nèi)存;
3)解析:把常量池中的符號引用轉(zhuǎn)換為直接引用;

初始化:每個類和接口在首次主動使用時初始化。為類變量賦予正確的初始值;
1)如果類存在直接超類,且直接超類沒有被初始化,先初始化直接超類;
2)如果類存在初始化方法,就執(zhí)行此方法;

只有六種活動被認為是主動使用:
1)、創(chuàng)建類的新實例
2)、調(diào)用類中聲明的靜態(tài)方法
3)、操作類或者接口中聲明的非常量靜態(tài)字段
4)、調(diào)用Java API中特定的反射方法
5)、初始化一個類的子類
6)、指定一個類作為jvm啟動時的初始化類

使用階段(絕大部分時間)

實例化

實例化途徑
明確實例化一個類的四種途徑:
1)、new操作符;
2)、調(diào)用Class或者Java.lang.reflect.Constructor對象的newInstance()方法;
3)、調(diào)用任何現(xiàn)有對象的Clone()方法;
4)、通過java.io.ObjectInputStream類的getObject()方法反序列化;

隱含實例化的幾種途徑:
1)、保存命令行參數(shù)的String對象;
2)、和類裝載相關,jvm裝載的每一個類型,會暗中實例化一個Class對象來代表這個類型;
3)、和類裝載相關,當jvm裝載了在常量池中包含CONSTANT_String_info入口類的時候,會創(chuàng)建新的String對象的實例來表示這些常量字符串;
4)、通過執(zhí)行包含字符串連接操作符的表達式產(chǎn)生對象;

實例化步驟
1)、在堆中為保存對象的實例變量分配內(nèi)存;
2)、為實例變量初始化為默認的初始值;
3)、為實例變量賦正確的初始值,有三種技術完成賦值:
  a)、如果對象是clone() 創(chuàng)建的,jvm把原實例變量中的值拷貝到新對象中;
  b)、如果是通過ObjectInputStream類的readObject()調(diào)用反序列化的,jvm從輸入流中讀取的值來初始化實例變量;
  c)、jvm調(diào)用對象的實例化方法把對象的實例變量初始化為正確的初始值;

垃圾收集和對象終結(jié)
jvm實現(xiàn)必須具有某種自動堆存儲管理策略,大部分是使用垃圾收集器。如果類聲明了 void finalize()方法,垃圾收集器在釋放實例內(nèi)存前會執(zhí)行這個方法。

垃圾收集器自動調(diào)用的finalize()方法拋出的任何異常都將被忽略。

結(jié)束階段

從jvm中卸載類型
很多情況,jvm中類的生命周期和對象的生命周期很相似。jvm如何判斷動態(tài)裝載的類型是否仍然被程序使用,其判斷方式和判斷對象是否仍然被使用很相似。

如果程序不再引用某類型,那么類型就是不可觸及的,就可以被卸載。

使用啟動類裝載器裝載的類型永遠都是可觸及的,所以永遠不會被卸載。只有使用用戶定義的類裝載器裝載的類型才會變成不可觸及,才會被卸載。

相關文章

  • Java Applet查找素數(shù)小程序代碼實例

    Java Applet查找素數(shù)小程序代碼實例

    這篇文章主要介紹了Java Applet查找素數(shù)小程序代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java枚舉類用法實例

    Java枚舉類用法實例

    這篇文章主要介紹了Java枚舉類用法,實例分析了java中枚舉類的實現(xiàn)與使用技巧,需要的朋友可以參考下
    2015-05-05
  • springcloud ribbon 饑餓加載原理解析

    springcloud ribbon 饑餓加載原理解析

    這篇文章主要介紹了springcloud ribbon 饑餓加載原理解析,饑餓加載特別適用于對啟動性能要求較高的場景,如系統(tǒng)啟動初期就有高并發(fā)請求的情況,感興趣的朋友跟隨小編一起學習吧
    2024-04-04
  • SpringBoot ApplicationContextAware拓展接口使用詳解

    SpringBoot ApplicationContextAware拓展接口使用詳解

    當一個類實現(xiàn)了這個接口(ApplicationContextAware)之后,這個類就可以方便獲得ApplicationContext中的所有bean。換句話說,就是這個類可以直接獲取spring配置文件中,所有有引用到的bean對象
    2023-04-04
  • springboot啟動時如何指定spring.profiles.active

    springboot啟動時如何指定spring.profiles.active

    這篇文章主要介紹了springboot啟動時如何指定spring.profiles.active問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java ==,equals()與hashcode()的使用

    Java ==,equals()與hashcode()的使用

    本文主要介紹了Java ==,equals()與hashcode()的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Java數(shù)據(jù)結(jié)構及算法實例:考拉茲猜想 Collatz Conjecture

    Java數(shù)據(jù)結(jié)構及算法實例:考拉茲猜想 Collatz Conjecture

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構及算法實例:考拉茲猜想 Collatz Conjecture,本文直接給出實現(xiàn)代碼,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-06-06
  • Spring Boot接口設計防篡改、防重放攻擊詳解

    Spring Boot接口設計防篡改、防重放攻擊詳解

    這篇文章主要給大家介紹了關于Spring Boot接口設計防篡改、防重放攻擊的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • spring6+JDK17實現(xiàn)SSM起步配置文件

    spring6+JDK17實現(xiàn)SSM起步配置文件

    本文介紹了使用Spring6和JDK17配置SSM(Spring + Spring MVC + MyBatis)框架,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Spring Boot 捕捉全局異常 統(tǒng)一返回值的問題

    Spring Boot 捕捉全局異常 統(tǒng)一返回值的問題

    這篇文章主要介紹了Spring Boot 捕捉全局異常 統(tǒng)一返回值,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論

乌什县| 道真| 洛扎县| 大英县| 遵义市| 民县| 东丰县| 东兰县| 宜兰市| 石狮市| 宁陕县| 双辽市| 苍南县| 长沙县| 莱芜市| 建德市| 荆州市| 进贤县| 潼南县| 神农架林区| 德兴市| 大方县| 盐边县| 泰安市| 沂水县| 新疆| 关岭| 甘泉县| 揭西县| 德安县| 沙河市| 遵义市| 漠河县| 商洛市| 潜江市| 淮阳县| 阳原县| 宜良县| 额济纳旗| 葵青区| 青神县|