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

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

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

    Feng.Li's Java See

    抓緊時間,大步向前。
    隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
    數據加載中……

    JVM使用方法區信息例子

    本文是對JVM執行一個Class文件的過程的一個總結。比如,現在我有2個類:
    1:Class Lava {
    ?? private int speed = 5;
    ?? void flow() {}
    }
    2:??? Class Volcano {
    ?? public static void main(String [] args) {
    ??? Lava lava =? new Lava ();
    ??? lava.flow()
    }
    }
    下面就是JVM的某個實現執行Class文件的一個過程:

    1:JVM找到并讀入相應的Class文件 :Volcano.class,然后把導入的二進制數據中提取的類型信息保存到方法區(方法區:保存類型信息的運行時數據區,也就是JVM內存管理體系結構的一個組成)

    2:執行保存在方法區的字節碼 (執行main()方法的字節碼,)在執行時,持有指向Volcano類常量池的一個指針 (常量池:就是一個符號引用 如:Lava lava = new Lava()這句中的Lava就是一個符號引用)

    3:JVM只在需要時才裝載類(動態連接) 。JVM使用常量池指針找到第一項,發現是"Lava"字符串,檢查方法區,發現Lava類并未被裝載。


    4:開始裝載Volcano.class,同樣,把讀入的二進制數據中的類型信息放到方法區。

    5:JVM用一個直接指向方法區Lava類數據的指針來替換常量池的第一項,也就是原先的“Lava”字符串。 這個過程就是所謂的:“常量池解析”---符號引用替換為直接引用。

    6:JVM準備為新的Lava對象分配內存。分配對象當然需要類型信息,此時,用剛才替換的那個指針,也就是替換“Lava”字符串的那個指針(此時,這個指針指向方法區Lava類的數據)來訪問Lava的類型信息(這個信息剛放到方法區)。找出其中記錄的這樣一個信息:需要分配多少內存。

    7:確定內存要多大以后,在堆上分配內存,并初始化變量,包括超類的變量()。

    8:把新生成的Lava對象引用壓到Java棧中。到此,完成Lava lava = new Lava(); speed初始化為0。

    9:通過此時生成的Lava引用,把speed 初始化為正確的值 :5

    10: 通過這個引用調用Flow()。

    以上為我以一個例子來說明JVM 的一個實現執行Class的流程,歡迎大家閱讀和提出意見.

    posted on 2006-12-14 12:05 小鋒 閱讀(2165) 評論(4)  編輯  收藏 所屬分類: J2SE

    評論

    # re: JVM使用方法區信息例子  回復  更多評論   

    《深入Java虛擬機》這本書真不錯,講的很清楚啊。。。
    2007-08-23 22:44 | carrincha

    # re: JVM使用方法區信息例子  回復  更多評論   

    個人感覺第8和9需要修改一下
    改為“通過Lava的默認構造函數將Lava對象壓入棧中,并完成初試化”
    應該說明下lava被壓入的原因 這樣才清晰 你說呢?
    2008-10-23 11:11 | wangc

    # re: JVM使用方法區信息例子  回復  更多評論   

    關于speed的兩次初始化 你有何依據 能不能說來聽聽:)
    2008-10-23 11:14 | wangc

    # re: JVM使用方法區信息例子  回復  更多評論   

    帖子不能修改 這個很頭疼
    2008-10-24 09:22 | wangc
    主站蜘蛛池模板: 1000部禁片黄的免费看| 黄色网址在线免费| 妞干网免费视频观看| 精品亚洲成在人线AV无码| 1000部禁片黄的免费看| 亚洲综合网美国十次| 最刺激黄a大片免费网站| 亚洲天堂男人天堂| 无码国产精品一区二区免费式影视 | 亚洲av日韩综合一区在线观看| 一级特黄特色的免费大片视频| 日韩亚洲精品福利| 一区二区在线视频免费观看| 亚洲综合国产一区二区三区| 99re8这里有精品热视频免费| 一本久久a久久精品亚洲| 亚洲成人免费在线| 亚洲国产成人久久精品app| 日韩欧美一区二区三区免费观看| 亚洲日韩中文字幕无码一区| 免费永久国产在线视频| 一级毛片视频免费| 久久久久亚洲AV成人无码网站| 国产精品视频免费| 亚洲AV日韩AV无码污污网站| jjzz亚洲亚洲女人| 免费人成黄页在线观看日本| 亚洲人成高清在线播放| 国产aⅴ无码专区亚洲av麻豆| 野花高清在线观看免费完整版中文| 日韩精品极品视频在线观看免费| 日韩亚洲欧洲在线com91tv| 久久精品国产免费一区| 亚洲视频在线免费观看| 成人午夜性A级毛片免费| jyzzjyzz国产免费观看| 337p欧洲亚洲大胆艺术| 性做久久久久免费看| 日韩精品免费在线视频| 亚洲精品亚洲人成在线| 亚洲线精品一区二区三区|