<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ù)

    主站蜘蛛池模板: 日韩高清免费观看| 久久免费国产视频| 免费黄色app网站| 久久精品国产亚洲AV久| 免费精品人在线二线三线区别| 亚洲精品视频在线播放| 84pao强力永久免费高清| 亚洲综合无码一区二区三区| 精品国产污污免费网站aⅴ| 亚洲精品综合一二三区在线| 污污网站18禁在线永久免费观看| 亚洲好看的理论片电影| 亚洲美女视频免费| 亚洲一区二区观看播放| 日本免费一区二区三区最新vr| 免费精品国产自产拍在线观看| 亚洲人成无码久久电影网站| 乱爱性全过程免费视频| 亚洲国产精品无码久久一线| 2021国内精品久久久久精免费| 亚洲日韩乱码久久久久久| 性感美女视频免费网站午夜| 免费一级做a爰片久久毛片潮| 国产亚洲自拍一区| 最近免费中文在线视频| 亚洲成a人无码亚洲成www牛牛| 免费国产在线观看不卡| 久久久精品视频免费观看| 亚洲国产女人aaa毛片在线| 免费观看激色视频网站(性色)| 亚洲JIZZJIZZ妇女| 亚洲精品乱码久久久久久按摩 | 免费观看成人毛片a片2008| 亚洲欧美自偷自拍另类视| 亚洲国产精品自在拍在线播放 | 日本一道在线日本一道高清不卡免费| 黄色a三级免费看| 亚洲一区二区三区日本久久九| 好吊妞视频免费视频| 最新久久免费视频| 四虎必出精品亚洲高清|