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

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

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

    www.baidu.com

    JavaCode--我愛你,芳兒

    JavaStudy--我愛你,芳兒

    Java虛擬機(jī)體系結(jié)構(gòu)概述 (轉(zhuǎn))

    Java虛擬機(jī)之所以稱為“虛擬”,就是因?yàn)樗鼉H僅是由一個規(guī)范來定義的抽象計算機(jī)。要運(yùn)行某個Java程序,首先需要一個符合該規(guī)范的具體實(shí)現(xiàn)。下面主要討論這個規(guī)范本身。

    Java虛擬機(jī)是什么
       要理解Java虛擬機(jī),你必須意識到,當(dāng)你說“Java虛擬機(jī)”時,可能指的是如下三種不同的東西:

    • 抽象規(guī)范 
    • 一個具體的實(shí)現(xiàn) 
    • 一個運(yùn)行中的虛擬機(jī)實(shí)例

    Java虛擬機(jī)抽象規(guī)范僅僅是個概念。該規(guī)范的具體實(shí)現(xiàn),可能來自多個提供商,并存在多個平臺上。它或者完全用軟件實(shí)現(xiàn),或者以硬件和軟件相結(jié)合的方式來實(shí)現(xiàn)。當(dāng)運(yùn)行一個Java程序的同時,也就在運(yùn)行了一個Java虛擬機(jī)實(shí)例。

    Java虛擬機(jī)的生命周期
       一個運(yùn)行時的Java虛擬機(jī)實(shí)例的天職就是:負(fù)責(zé)運(yùn)行一個Java程序。當(dāng)啟動一個Java程序時,一個虛擬機(jī)實(shí)例也就誕生了。當(dāng)該程序關(guān)閉推出,這個虛擬機(jī)實(shí)例也就隨之消亡。每個Java程序都運(yùn)行在于自己的Java虛擬機(jī)實(shí)例中。Java虛擬機(jī)實(shí)例通過調(diào)用某個初始類的main()方法來運(yùn)行一個Java程序。而這個main()方法必須是public,static,返回值為void。main()方法作為該程序初始線程的起點(diǎn),任何其他的線程都是由這個初始線程啟動的。
       Java虛擬機(jī)內(nèi)部有兩種線程:守護(hù)線程和非守護(hù)線程。守護(hù)線程通常由虛擬機(jī)自己使用的,比如執(zhí)行垃圾收集任務(wù)的線程。但是,Java程序也可以把它的創(chuàng)建的任何線程標(biāo)記為守護(hù)線程。而Java程序中的初始線程,就是開始于main()的那個,是非守護(hù)線程。只要有非守護(hù)線程在運(yùn)行,那么這個Java程序也在繼續(xù)運(yùn)行,只有該程序中所有的非守護(hù)線程都終止時,虛擬機(jī)實(shí)例將自動退出。

    Java虛擬機(jī)的體系結(jié)構(gòu)
      Java虛擬機(jī)的結(jié)構(gòu)分為:類裝載子系統(tǒng),運(yùn)行時數(shù)據(jù)區(qū),執(zhí)行引擎,本地方法接口。其中運(yùn)行時數(shù)據(jù)區(qū)又分為:方法區(qū),堆,Java棧,PC寄存器,本地方法棧。

    類裝載子系統(tǒng)
      Java虛擬機(jī)中,負(fù)責(zé)查找并裝載類型的那部分稱為類裝載子系統(tǒng)。
      Java虛擬機(jī)有兩種類裝載器:啟動類裝載器和用戶自定義類裝載器。啟動類裝載器是Java虛擬機(jī)實(shí)現(xiàn)的一部分。用戶自定義類裝載器是Java程序的一部分。
      類裝載器的動作:

    1. 裝載---查找并裝載類型的二進(jìn)制數(shù)據(jù)
    2. 連接---執(zhí)行驗(yàn)證,準(zhǔn)備,以及解析(可選)
      驗(yàn)證:確保被導(dǎo)入類型的正確性
      準(zhǔn)備:為類變量分配內(nèi)存,并將其初始化為默認(rèn)值
      把類型中的符號引用換為直接引用
    3. 初始化---把類變量初始化為正確的初始值

    方法區(qū)
      在Java虛擬機(jī)中,被裝載類型的信息存儲在一個邏輯上被稱為方法區(qū)的內(nèi)存中。當(dāng)虛擬機(jī)裝載某個類型時,它使用類裝載器定位相應(yīng)的class文件,然后讀入這個class文件,然后將它傳輸?shù)教摂M機(jī)中,緊接著虛擬機(jī)提取其中的類型信息,并將這些信息存儲到方法區(qū)。該類型中的類(靜態(tài))變量同樣也是存儲在方法區(qū)中。方法區(qū)的大小不必固定,可以根據(jù)需要動態(tài)調(diào)整。方法區(qū)也可以被垃圾收集,因?yàn)樘摂M機(jī)允許通過用戶定義的類裝載器來動態(tài)擴(kuò)展Java程序,因此,一些類也會成為“不再引用”的類。 
      對于每個裝載的類型,虛擬機(jī)都會在方法區(qū)中存儲以下類型信息:

    • 這個類型的全限定名。
    • 這個類型的直接超類的全限定名(除非是java.lang.Object,無超類)
    • 這個類型是類類型還是接口類型。
    • 這個類型的訪問修飾符(public,abstract ...)
    • 任何直接超接口的全限定名的有序列表

    除了上面列出的基本類型信息外,虛擬機(jī)還為每個被裝載的類型存儲以下信息

    • 該類型的常量池
    • 字段信息
    • 方法信息
    • 除了常量以外所有類(靜態(tài))變量
    • 一個到類ClassLoader的引用
    • 一個到Class類的引用

    http://blog.csdn.net/mimicimim/archive/2007/10/08/1815880.aspx



     

    芳兒寶貝.我愛你

    posted on 2007-12-08 15:53 wǒ愛伱--咾婆 閱讀(243) 評論(0)  編輯  收藏 所屬分類: JavaBaseFiles

    導(dǎo)航

    統(tǒng)計

    公告

    芳兒寶貝.我愛你


    黑客基地
    http://www.hackbase.com
    全球最大的黑客門戶網(wǎng)站


     最近在讀的書:

    常用鏈接

    留言簿(1)

    隨筆分類(37)

    JavaCode

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品国产精品亚洲人人 | 国产一级淫片a免费播放口之 | 四虎1515hh永久久免费| 亚洲色欲一区二区三区在线观看| 精品久久久久久亚洲综合网| 午夜色a大片在线观看免费| 日本亚洲色大成网站www久久| 成年人在线免费观看| 亚洲精品亚洲人成在线| 成年性生交大片免费看| 在线精品亚洲一区二区| 免费的一级片网站| 久久亚洲精品成人无码| 亚洲精品无码永久在线观看 | 亚洲国产精品无码久久青草| 成人国产网站v片免费观看| 国产亚洲一区二区三区在线不卡| 久久久久久噜噜精品免费直播| 中国亚洲女人69内射少妇| 中文成人久久久久影院免费观看| 亚洲AV无码一区二区乱子伦| 免费人妻无码不卡中文字幕系| 亚洲色大成网站www永久| 成年午夜视频免费观看视频| 免费一级毛suv好看的国产网站| 五月天婷亚洲天综合网精品偷| 午夜无遮挡羞羞漫画免费| 亚洲精品色播一区二区| 亚洲熟伦熟女新五十路熟妇 | 日韩亚洲AV无码一区二区不卡| 四虎在线免费视频| 自拍偷自拍亚洲精品偷一| 亚洲综合无码精品一区二区三区| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 日韩毛片免费无码无毒视频观看| 国产精品亚洲一区二区无码 | 青青操免费在线视频| 亚洲综合色一区二区三区小说| 情侣视频精品免费的国产| 在线涩涩免费观看国产精品| 亚洲成人免费网址|