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

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

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

    Change Dir

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

    統(tǒng)計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    JVM學習筆記(0)——JVM一把抓

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

    今天先開個頭。筆記是無結構的流式記錄,類似tips的list吧~

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

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

    主站蜘蛛池模板: 永久免费的网站在线观看| 精品国产污污免费网站aⅴ| 极品美女一级毛片免费| 免费人人潮人人爽一区二区| 大学生一级特黄的免费大片视频| 永久黄网站色视频免费直播| 久久伊人亚洲AV无码网站| 久久精品国产亚洲沈樵| 亚洲av片不卡无码久久| 亚洲精品乱码久久久久久蜜桃图片 | 一级特黄色毛片免费看| 香港a毛片免费观看| 97无码免费人妻超级碰碰夜夜 | 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 日本亚洲免费无线码| 一级成人a做片免费| 国产亚洲人成网站在线观看| 国产一级a毛一级a看免费人娇| 国产精品视频免费观看| 亚洲愉拍99热成人精品热久久| 亚洲精品9999久久久久无码| 国产高清免费观看| 亚洲国产理论片在线播放| 国产伦精品一区二区免费| 免费无遮挡无码视频网站| 成人精品综合免费视频| 日本免费一二区在线电影 | 国产午夜亚洲精品| 国产v片免费播放| 日本亚洲免费无线码| 亚洲精品第一国产综合精品99| 亚洲人成网男女大片在线播放| 久9这里精品免费视频| 2020年亚洲天天爽天天噜| 又色又污又黄无遮挡的免费视| 国产成人精品日本亚洲网址| 四虎影院永久免费观看| 久久久久成人片免费观看蜜芽| 精品国产日韩久久亚洲| 国产亚洲精品成人a v小说| 久草视频免费在线|