JVM內(nèi)存模型

JVM內(nèi)存模型圖

一.本地方法棧

每個線程獨(dú)享一塊本地方法椃睦埃空間利职,存儲該線程運(yùn)行過程中調(diào)用的本地方法(被native關(guān)鍵字修飾的方法)執(zhí)行過程中的局部變量滔灶。

二.程序計(jì)數(shù)器

每個線程獨(dú)享一塊程序計(jì)數(shù)器空間送膳,存儲該線程運(yùn)行到的那行代碼在方法區(qū)中的內(nèi)存地址员魏,可以簡單理解為那行代碼的行號。程序計(jì)數(shù)器的值由字節(jié)碼執(zhí)行引擎負(fù)責(zé)修改叠聋。

為什么要設(shè)計(jì)程序計(jì)數(shù)器撕阎?因?yàn)镴VM是多線程運(yùn)行的,發(fā)生線程切換時需要將被掛起的線程運(yùn)行狀態(tài)記錄下來碌补,以便該線程再次運(yùn)行時能從上次的位置繼續(xù)執(zhí)行虏束。

三.方法區(qū)(元空間)

方法區(qū)JDK8之前叫永久代棉饶,JDK8之后叫元空間(Metaspace)。存儲常量镇匀、靜態(tài)變量在堆中的內(nèi)存地址照藻、類信息。

四.棧

每個線程獨(dú)享一塊椏勇桑空間岩梳,該線程執(zhí)行的每個方法在棧內(nèi)部又獨(dú)享一塊空間,稱為棧幀晃择。

  public static void main(String[] args) {
    System.out.println("1 + 2 = " + add());
    System.out.println("Hello world!");
  }

  public static int add() {
    int a = 1;
    int b = 2;
    return a + b;
  }

上面這段示例代碼的棧內(nèi)部結(jié)構(gòu)如圖:


棧內(nèi)部結(jié)構(gòu)示意圖

每個棧幀內(nèi)部由以下4部分組成:

1.局部變量表

方法內(nèi)部的局部變量在堆或方法區(qū)中的內(nèi)存地址冀值。

2.操作數(shù)棧

棧內(nèi)部用于計(jì)算的臨時數(shù)據(jù)存儲區(qū)。

3.動態(tài)鏈接

存儲當(dāng)前棧幀所屬方法在方法區(qū)中的內(nèi)存地址宫屠。

4.方法出口

存儲當(dāng)前棧幀所屬方法的運(yùn)行出口列疗,即當(dāng)前方法運(yùn)行結(jié)束后繼續(xù)執(zhí)行哪個方法哪一行代碼,在方法區(qū)中的內(nèi)存地址浪蹂,可以簡單理解為那行代碼的行號抵栈。

五.堆

堆內(nèi)存分為年輕代(YoungGen)和老年代(OldGen),默認(rèn)情況下坤次,年輕代占堆內(nèi)存的1/3古劲,老年代占2/3。年輕代中又分為生成區(qū)(Eden)和幸存區(qū)(Survivor)缰猴,生成區(qū)占年輕代4/5产艾,幸存區(qū)占年輕代1/5。幸存區(qū)中分為兩個相等大小的區(qū)域S0和S1滑绒,也叫From區(qū)和To區(qū)闷堡。每次執(zhí)行GC后,F(xiàn)rom區(qū)和To區(qū)會進(jìn)行交換疑故。綜上杠览,默認(rèn)情況下,各區(qū)域內(nèi)存大小比例為OldGen:Eden:S0:S1 = 20:8:1:1纵势。


堆內(nèi)部結(jié)構(gòu)示意圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踱阿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钦铁,更是在濱河造成了極大的恐慌扫茅,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育瓜,死亡現(xiàn)場離奇詭異,居然都是意外死亡栽烂,警方通過查閱死者的電腦和手機(jī)躏仇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門恋脚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焰手,你說我怎么就攤上這事糟描。” “怎么了书妻?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵船响,是天一觀的道長。 經(jīng)常有香客問我躲履,道長见间,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任工猜,我火速辦了婚禮米诉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篷帅。我一直安慰自己史侣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布魏身。 她就那樣靜靜地躺著惊橱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箭昵。 梳的紋絲不亂的頭發(fā)上税朴,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音宙枷,去河邊找鬼掉房。 笑死,一個胖子當(dāng)著我的面吹牛慰丛,可吹牛的內(nèi)容都是我干的卓囚。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼诅病,長吁一口氣:“原來是場噩夢啊……” “哼哪亿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贤笆,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蝇棉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芥永,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篡殷,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年埋涧,在試婚紗的時候發(fā)現(xiàn)自己被綠了板辽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奇瘦。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖劲弦,靈堂內(nèi)的尸體忽然破棺而出耳标,到底是詐尸還是另有隱情,我是刑警寧澤邑跪,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布次坡,位于F島的核電站,受9級特大地震影響画畅,放射性物質(zhì)發(fā)生泄漏砸琅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一夜赵、第九天 我趴在偏房一處隱蔽的房頂上張望明棍。 院中可真熱鬧,春花似錦寇僧、人聲如沸摊腋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兴蒸。三九已至,卻和暖如春细办,著一層夾襖步出監(jiān)牢的瞬間橙凳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工笑撞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岛啸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓茴肥,卻偏偏與公主長得像坚踩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓤狐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容