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

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

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

    Change Dir

    先知cd——熱愛生活是一切藝術(shù)的開始

    統(tǒng)計(jì)

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術(shù)

    我的鏈接

    淘寶技術(shù)

    閱讀排行榜

    評論排行榜

    JVM學(xué)習(xí)筆記(0)——JVM一把抓

    從畢業(yè)的時候斷斷續(xù)續(xù)讀這本書,發(fā)現(xiàn)已經(jīng)很久了,一直只是到概念層次,沒有深入細(xì)節(jié)。今天重讀這本書,希望能從中獲取更多。

    今天先開個頭。筆記是無結(jié)構(gòu)的流式記錄,類似tips的list吧~

    1. 每個java程序運(yùn)行于自己的JVM實(shí)例中,java程序的啟動入口必須是public static void main(String[] args);
    2. 每個java程序,開始于main,結(jié)束于所有非守護(hù)線程的終止;
    3. jvm的體系結(jié)構(gòu)包含:類裝載器子系統(tǒng)(裝載class)、運(yùn)行時數(shù)據(jù)區(qū)(存放數(shù)據(jù))、執(zhí)行引擎(執(zhí)行被裝載類的指令);
    4. 運(yùn)行時數(shù)據(jù)區(qū)包含:堆、方法區(qū)、java棧、本地方法棧、PC寄存器。其中堆和方法區(qū)是所有線程共享的,而其他三者是線程獨(dú)享的;
    5. jvm數(shù)據(jù)類型分兩種:基本類型{數(shù)值類型{浮點(diǎn)數(shù){float,double},整數(shù){byte,short,int,long,char}},boolean,returnAddress}和引用類型{引用{類,接口,數(shù)組}},基本類型存數(shù)據(jù)本身,引用類型存數(shù)據(jù)引用;
    6. boolean是個特別的類型,jvm處理按int來操作,0為false,非0為true,boolean數(shù)組是按byte數(shù)組來訪問的;
    7. 引用類型中,類和接口都是對類或者實(shí)現(xiàn)了接口的類的實(shí)例的引用,數(shù)組是對數(shù)組對象的引用,一個特殊引用是null,表示沒有引用任何對象;
    8. 數(shù)據(jù)類型取值范圍:{byte:1字節(jié)有符號,short:2字節(jié)有符號,int:4字節(jié)有符號,long:8字節(jié)有符號,char:2字節(jié)無符號,float:4字節(jié)IEEE754單精度,double:8字節(jié)IEEE754雙精度,returnAddress:統(tǒng)一方法中某操作碼的地址,reference:堆中對象的引用或null}
    9. JVM數(shù)據(jù)單元是字,字長的設(shè)計(jì)最短要32bit即4個字節(jié),保證能容納byte,short,int,char,float,returnAddress和reference類型的值;
    10. JVM有兩種類加載器:啟動類裝載器和用戶自定義類裝載器,前者是jvm實(shí)現(xiàn)的一部分,后者是java程序的一部分,不同類裝載器裝載的類被放在虛擬機(jī)內(nèi)部不同的命名空間;
    11. 方法區(qū)存儲:{類加載時,讀入class文件后,解析得到的類型信息:全限定名,直接父類的全限定名,是類類型還是接口類型,訪問修飾符,直接實(shí)現(xiàn)接口的全限定名有序列表},{常量池:直接常量(string,int等)和對其他類型、字段和方法的符號引用},{字段信息:字段名,字段類型,字段修飾符},{方法信息:方法名,方法返回類型,方法參數(shù)的數(shù)量和類型,方法的修飾符},{類變量:static},{編譯時常量:final},{指向ClassLoader的引用:如果是自定義裝載的},{指向Class類的引用:Class.forName()或者object.getClass()},{方法表:虛擬機(jī)為每個非抽象類生成一個方法表};
    12. 堆存儲:所有運(yùn)行時創(chuàng)建的類實(shí)例或數(shù)組都放到同一個堆中;
    13. 程序計(jì)數(shù)器:大小1個字長,內(nèi)容總是下一條將被執(zhí)行指令的地址;
    14. java棧:只有push和pop操作,單位是一個棧幀,保存線程的運(yùn)行狀態(tài),每個幀中存儲當(dāng)前的參數(shù)、局部變量、中間運(yùn)算結(jié)果等。當(dāng)方法以return或者異常拋出結(jié)束時,當(dāng)前幀pop,當(dāng)調(diào)用一個java方法時,push一個幀成為當(dāng)前幀。因?yàn)閖ava棧數(shù)據(jù)是每線程私有的,可以不考慮同步問題。java棧的每個棧幀又包含三部分:局部變量區(qū)、操作數(shù)棧和幀數(shù)據(jù)區(qū)。局部變量和方法參數(shù)存入局部變量區(qū),操作數(shù)棧是jvm的工作區(qū),指令都要經(jīng)過棧彈出數(shù)據(jù)進(jìn)行運(yùn)算,一般的iload,istore等指令就是push和pop;幀數(shù)據(jù)區(qū)主要是支持常量池解析、正常方法返回以及異常派發(fā)機(jī)制;
    15. 本地方法棧:線程調(diào)用一個本地方法時,本地方法接口使用本地方法棧;
    16. 執(zhí)行引擎:執(zhí)行指令,通用技術(shù)有解釋、即時編譯、自適應(yīng)優(yōu)化和芯片級執(zhí)行,Sun的hotspot使用自適應(yīng)優(yōu)化:剛開始對所有代碼解釋運(yùn)行,監(jiān)視代碼運(yùn)行情況,把經(jīng)常執(zhí)行的代碼編譯為本地代碼,優(yōu)化,然后繼續(xù)執(zhí)行。

    posted on 2012-09-07 14:57 changedi 閱讀(454) 評論(0)  編輯  收藏 所屬分類: Java技術(shù)

    主站蜘蛛池模板: 亚洲精品国产成人专区| 中文字幕视频免费| 亚洲熟妇无码av另类vr影视| 亚洲成在人天堂一区二区| 亚洲国产婷婷综合在线精品| 免费无码成人AV片在线在线播放| 99久久免费精品视频| 两个人日本免费完整版在线观看1 两个人的视频www免费 | 亚洲男人在线无码视频| 女人18特级一级毛片免费视频| 久久99精品视免费看| 日本道免费精品一区二区| 羞羞的视频在线免费观看| 亚洲啪AV永久无码精品放毛片 | 日本高清免费观看| 三级黄色免费观看| 一区二区三区免费电影| 一级a性色生活片久久无少妇一级婬片免费放| 亚洲午夜成激人情在线影院| 精品亚洲aⅴ在线观看| 亚洲国产成人精品不卡青青草原| 亚洲日韩激情无码一区| 久久久久无码专区亚洲av| heyzo亚洲精品日韩| 四虎永久成人免费| 国产成人精品高清免费| 四虎国产精品免费久久影院| 精品免费国产一区二区三区 | 黄色三级三级三级免费看| 相泽南亚洲一区二区在线播放| 亚洲欧美成人一区二区三区| 亚洲色大成WWW亚洲女子| 亚洲av无一区二区三区| 精品久久亚洲一级α| 美景之屋4在线未删减免费 | 亚洲日韩小电影在线观看| 亚洲精品无码专区久久久| 国产日韩亚洲大尺度高清| 亚洲国产高清人在线| 亚洲精品第五页中文字幕| 亚洲中文无码a∨在线观看|