<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂人思維·成都
    Google
    軟件架構(gòu),開(kāi)則持續(xù),合則穩(wěn)健;亦開(kāi)亦合,剛?cè)岵?jì);講究平衡如同生活之中庸和諧.
    E-MAIL:guojian。zhang@gmail。com
    posts - 19,  comments - 62,  trackbacks - 0

    [摘要]

    類(lèi)的初始化和對(duì)象初始化是 JVM 管理的類(lèi)型生命周期中非常重要的兩個(gè)環(huán)節(jié),Google 了一遍網(wǎng)絡(luò),有關(guān)類(lèi)裝載機(jī)制的文章倒是不少,然而類(lèi)初始化和對(duì)象初始化的文章并不多,特別是從字節(jié)碼和 JVM 層次來(lái)分析的文章更是鮮有所見(jiàn)。

    本文主要對(duì)類(lèi)和對(duì)象初始化全過(guò)程進(jìn)行分析,通過(guò)一個(gè)實(shí)際問(wèn)題引入,將源代碼轉(zhuǎn)換成 JVM 字節(jié)碼后,對(duì) JVM 執(zhí)行過(guò)程的關(guān)鍵點(diǎn)進(jìn)行全面解析,并在文中穿插入了相關(guān) JVM 規(guī)范和 JVM 的部分內(nèi)部理論知識(shí),以理論與實(shí)際結(jié)合的方式介紹對(duì)象初始化和類(lèi)初始化之間的協(xié)作以及可能存在的沖突問(wèn)題。


    本文發(fā)表于IBM DW,詳細(xì)正文請(qǐng)見(jiàn) 解析JAVA類(lèi)和對(duì)象的初始化過(guò)程
    網(wǎng)址:http://www-128.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html

    posted on 2006-09-08 10:15 狂人思維·成都 閱讀(2218) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): JAVA技術(shù)J2EE應(yīng)用

    FeedBack:
    # re: 深入JVM內(nèi)部解析類(lèi)和對(duì)象的初始化過(guò)程
    2006-09-13 00:38 | 飛飛

    張先生:你好,很佩服你的精彩闡述
    我有幾個(gè)疑問(wèn):1) 按照你的解決方法思路就是在對(duì)象實(shí)例化之前JVM已經(jīng)調(diào)用了clinit()方法了,也就是類(lèi)已經(jīng)初始化了,所以類(lèi)變量也已經(jīng)初始化了
    我想問(wèn)你這是怎么觸發(fā)類(lèi)初始化的
    2) 你在文章中提到init()方法包括了"所有具有指定初始化值的實(shí)例變量初始化語(yǔ)句",既然如此為什么沒(méi)有執(zhí)行CODE_MAP_CACHE = new HashMap()呢?
    希望能得到你的精彩回答!
    謝謝!  回復(fù)  更多評(píng)論
      
    # re: 深入JVM內(nèi)部解析類(lèi)和對(duì)象的初始化過(guò)程
    2006-09-13 00:39 | 飛飛

    我的郵箱是: zhangtf@sihitech.com.cn  回復(fù)  更多評(píng)論
      
    # re: 深入JVM內(nèi)部解析類(lèi)和對(duì)象的初始化過(guò)程
    2006-09-13 12:41 | 狂人
    您好,
    1) 按照你的解決方法思路就是在對(duì)象實(shí)例化之前JVM已經(jīng)調(diào)用了clinit()方法了,也就是類(lèi)已經(jīng)初始化了,所以類(lèi)變量也已經(jīng)初始化了我想問(wèn)你這是怎么觸發(fā)類(lèi)初始化的。

    該問(wèn)題在文中已有闡述:

    * "Java 虛擬機(jī)規(guī)范為類(lèi)的初始化時(shí)機(jī)做了嚴(yán)格定義:"initialize on first active use"--" 在首次主動(dòng)使用時(shí)初始化"。"
    *

    首次主動(dòng)使用的情形:
    o 創(chuàng)建某個(gè)類(lèi)的新實(shí)例時(shí)--new、反射、克隆或反序列化;
    o 調(diào)用某個(gè)類(lèi)的靜態(tài)方法時(shí);
    o 使用某個(gè)類(lèi)或接口的靜態(tài)字段或?qū)υ撟侄钨x值時(shí)(final字段除外);
    o 調(diào)用Java的某些反射方法時(shí)
    o 初始化某個(gè)類(lèi)的子類(lèi)時(shí)
    o 在虛擬機(jī)啟動(dòng)時(shí)某個(gè)含有main()方法的那個(gè)啟動(dòng)類(lèi)。


    2) 你在文章中提到init()方法包括了"所有具有指定初始化值的實(shí)例變量初始化語(yǔ)句",既然如此為什么沒(méi)有執(zhí)行CODE_MAP_CACHE = new HashMap()呢?

    "CODE_MAP_CACHE = new HashMap()"語(yǔ)句是執(zhí)行了的,并非您理解的"沒(méi)有執(zhí)行",而是在對(duì)象實(shí)例化時(shí)調(diào)用initEnum()方法對(duì)CODE_MAP_CACHE初始化并賦值后,又重新在static{ ... }區(qū)塊內(nèi)進(jìn)行了初始化。這是因?yàn)樵陬?lèi)還未來(lái)得及初始化完畢時(shí),在類(lèi)自身有一條實(shí)例化自身的語(yǔ)句"private static final CachingEnumResolver SINGLE_ENUM_RESOLVER = new CachingEnumResolver();"所導(dǎo)致的。   回復(fù)  更多評(píng)論
      
    # re: 深入JVM內(nèi)部解析類(lèi)和對(duì)象的初始化過(guò)程
    2006-09-17 18:01 | 化工
    樓主說(shuō)的確實(shí)對(duì)我很有用,多謝了!@_@~~  回復(fù)  更多評(píng)論
      

    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿

    隨筆分類(lèi)(31)

    隨筆檔案(19)

    文章分類(lèi)(3)

    文章檔案(3)

    我關(guān)注的Blogs

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: AV免费网址在线观看| 在线观着免费观看国产黄| 免费激情视频网站| 亚洲熟妇无码八AV在线播放| 亚洲狠狠ady亚洲精品大秀| 国产一区二区三区亚洲综合| 久久大香伊焦在人线免费| 免费观看大片毛片| 亚洲国产精品自在在线观看| 亚洲av综合日韩| 3d成人免费动漫在线观看| 亚洲成人影院在线观看| 亚洲另类小说图片| 国产一级婬片A视频免费观看| 91在线品视觉盛宴免费| 亚洲人成图片小说网站| 亚洲狠狠婷婷综合久久蜜芽| 男人j进入女人j内部免费网站| 日韩电影免费在线| 久久久久亚洲AV无码网站| 四虎精品免费永久免费视频| 波多野结衣免费在线观看| 亚洲人成人网站色www | 亚洲精品成人av在线| 久久人午夜亚洲精品无码区| 亚洲一级毛片免费看| 亚洲一区爱区精品无码| 亚洲AV无码一区二区三区电影| 99久久人妻精品免费二区| 亚洲国产一级在线观看| 性xxxx黑人与亚洲| 亚洲视频在线观看免费| 在线观看亚洲精品国产| 国产美女视频免费观看的网站| 色噜噜亚洲精品中文字幕| 亚洲kkk4444在线观看| 亚洲一区免费观看| 亚洲人成网站在线播放vr| 免费一区二区无码视频在线播放| 在线天堂免费观看.WWW| 91嫩草私人成人亚洲影院|