国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

深入理解java虛擬機(jī)-第二章

2019-11-14 22:05:36
字體:
供稿:網(wǎng)友
深入理解java虛擬機(jī)-第二章

第2章 Java內(nèi)存區(qū)域與內(nèi)存溢出異常

運(yùn)行數(shù)據(jù)區(qū)域

  1、程序計(jì)數(shù)器PRogram Counter Register) 是一塊較小的內(nèi)存空間,它可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。

  2、Java虛擬機(jī)棧(Stack)線程私有,每一個(gè)方法調(diào)用時(shí)都會(huì)創(chuàng)建一個(gè)棧幀(Stack Frame)用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。局部變量存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean,byte,char,short,int,float,long,double)、對(duì)象引用(reference類型)和returnAddress類型。

  3、本地方法棧(Native Method Stack),為虛擬機(jī)的本地方法提供的棧

  4、java堆(Heap) 所有線程共享的一塊內(nèi)存區(qū)域,存放對(duì)象實(shí)例。可能會(huì)被分為:新生代和老年代。再細(xì)致一點(diǎn)的有Eden空間、From Survivor空間、To Survivor空間等。

  5、方法區(qū)(Method Area) 各純種共享的內(nèi)存區(qū)域,用于存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。通常被 稱為 永久代(Permanent Generation)

  6、運(yùn)行時(shí)常量池(Runtime Constant Pool)是方法區(qū)的一部分,用于存放編譯期生成的各種 字面量和符號(hào)引用,這部分內(nèi)容將在類加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池中存放。

  7、直接內(nèi)存(Direct Memory)

HotSpot虛擬機(jī)對(duì)象探秘

對(duì)象創(chuàng)建

  1、虛擬機(jī)遇到一個(gè)new指今,檢查這個(gè)指今參數(shù)是否能在常量池中定位。

  2、檢查這個(gè)符號(hào)引用代表的類是否已被加載解析和初始化

    如果沒有先執(zhí)行相應(yīng)的類加載過程。

  3、分配內(nèi)存,對(duì)象所需內(nèi)存的大小在類加載完成后便可完全確定。

  4、將分配的內(nèi)存空間都初始化為零值,這一步保證了對(duì)象的實(shí)例字段在java代碼中可以不賦初始值就直接使用。

  5、虛擬機(jī)對(duì)對(duì)象進(jìn)行必要的設(shè)置,如何才能找到類的元數(shù)據(jù)信息、對(duì)象的哈希碼、對(duì)象的GC分代等這些信息存放在對(duì)象的對(duì)象頭中

  6、構(gòu)造函數(shù)

對(duì)象的內(nèi)存布局:可以分為3塊區(qū)域:對(duì)象頭(Header)、實(shí)例數(shù)據(jù)(Instance Data)和對(duì)齊填充(Padding)

對(duì)象的訪問定位:

  通過句柄訪問對(duì)象

  對(duì)過直接指針訪問對(duì)象


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 溆浦县| 丰都县| 新干县| 霍邱县| 昭通市| 武邑县| 永登县| 浦江县| 互助| 朝阳县| 汕头市| 来凤县| 西乌| 临汾市| 家居| 维西| 翁源县| 永平县| 淮北市| 五峰| 万宁市| 林口县| 修文县| 东光县| 修水县| 万宁市| 德州市| 博野县| 建瓯市| 齐齐哈尔市| 福海县| 宁强县| 若尔盖县| 东方市| 海城市| 定边县| 集贤县| 泰顺县| 阳谷县| 阿坝县| 库尔勒市|