10分鐘了解jvm內(nèi)存分配模型

0.概論

推薦書目:深入理解Java虛擬機(jī)

java虛擬機(jī)內(nèi)存主要分為三部分:java虛擬機(jī)棧荧恍,java堆稠茂,靜態(tài)方法區(qū)


jvm內(nèi)存模型

1.java虛擬機(jī)棧

其中java虛擬機(jī)棧就是我們俗稱的棧內(nèi)存,其中主要存放的是8種基本類型和對(duì)象的引用错览,這一部分為線程私有部分棚贾,當(dāng)請(qǐng)求的棧深度大于java虛擬機(jī)棧所允許的深度,jvm將拋出StackOverflowError異常
java中的引用可以理解為c++中的指針

2.java堆

java堆空間主要存放的就是java程序運(yùn)行過程中所產(chǎn)生的對(duì)象啦吧,而如果需要使用對(duì)象則需要先從棧內(nèi)存中拿到引用,通過引用來指向?qū)?nèi)存中的對(duì)象拙寡,而通過引用來操作對(duì)象也有兩種方式(句柄方式和直接指針)授滓,其中java堆是各個(gè)線程共享的,因此在操作對(duì)象的過程中我們需要使用鎖來鎖住對(duì)象倒庵,避免多線程中產(chǎn)生的數(shù)據(jù)不一致問題褒墨,當(dāng)對(duì)象大小總和超過jvm分配的對(duì)內(nèi)存大小時(shí)jvm會(huì)拋出OutOfMemoryError異常

句柄訪問對(duì)象

圖中的對(duì)象實(shí)例數(shù)據(jù)就是jvm中對(duì)象的成員變量等每個(gè)對(duì)象獨(dú)有的內(nèi)容,而對(duì)象類型數(shù)據(jù)就是類方法等所有對(duì)象相同的部分

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

堆內(nèi)存中其實(shí)還可以再繼續(xù)細(xì)分擎宝,可以分為年輕代和老年代郁妈,這兩代應(yīng)該通過名字十分好理解,年輕代一般存放年紀(jì)較小的绍申,剛生成沒多久的對(duì)象噩咪,而老年代則主要存放年紀(jì)較大顾彰,生成較久的對(duì)象(關(guān)于java堆中的具體內(nèi)容和jvm的gc策略后面還會(huì)有文章詳細(xì)講解)

3.靜態(tài)方法區(qū)

從該區(qū)域的名字大家其實(shí)就可以大概看出本區(qū)域存儲(chǔ)的內(nèi)容了,即主要存儲(chǔ)的是常量胃碾、靜態(tài)變量和方法涨享,還有一部分為jvm加載的類的信息(即.class文件),這一部分為線程共享的(因?yàn)槊總€(gè)線程都可以同時(shí)調(diào)用同一個(gè)方法嘛)

4.其他部分

啊嘞嘞仆百?不是說jvm主要分為3個(gè)區(qū)域么厕隧?對(duì),但是要注意是主要俄周,其實(shí)jvm還存在幾個(gè)經(jīng)常被人忽略的區(qū)域吁讨,即為:本地方法棧,程序計(jì)數(shù)器
程序計(jì)數(shù)器:當(dāng)前線程執(zhí)行字節(jié)碼的行號(hào)指示器(這是官方解釋峦朗,其實(shí)就是執(zhí)行到代碼的行號(hào))建丧,由于每個(gè)線程執(zhí)行到的代碼行號(hào)都不同,因此這一部分肯定是線程私有的啦
本地方法棧:主要為虛擬機(jī)使用native方法服務(wù)

5.直接內(nèi)存的使用

在java1.4中引入了非阻塞IO模式波势,即NIO翎朱,在我們使用NIO時(shí)會(huì)通過native方法分配直接內(nèi)存,避免在Java堆與native堆中來回復(fù)制數(shù)據(jù)尺铣,提高性能

其實(shí)嘛拴曲,本來這是挺久以前學(xué)習(xí)的知識(shí)了,由于最近忙于復(fù)習(xí)找實(shí)習(xí)的事情迄埃,學(xué)習(xí)的新東西不是很多疗韵,也沒怎么整理兑障,就整理了一下以前學(xué)習(xí)的知識(shí)分享給大家侄非,喜歡的話不妨點(diǎn)一個(gè)喜歡,或者關(guān)注一下我的簡(jiǎn)書和github
ps:本文所有內(nèi)容為自己閱讀深入理解java虛擬機(jī)的理解流译,圖也均為自己手畫逞怨,希望大家如果需要轉(zhuǎn)載請(qǐng)注明出處
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市福澡,隨后出現(xiàn)的幾起案子叠赦,更是在濱河造成了極大的恐慌,老刑警劉巖革砸,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件除秀,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡算利,警方通過查閱死者的電腦和手機(jī)册踩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來效拭,“玉大人暂吉,你說我怎么就攤上這事胖秒。” “怎么了慕的?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵阎肝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我肮街,道長(zhǎng)风题,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任嫉父,我火速辦了婚禮俯邓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熔号。我一直安慰自己稽鞭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布引镊。 她就那樣靜靜地躺著朦蕴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弟头。 梳的紋絲不亂的頭發(fā)上吩抓,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音赴恨,去河邊找鬼疹娶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伦连,可吹牛的內(nèi)容都是我干的雨饺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惑淳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼额港!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歧焦,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤移斩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绢馍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體向瓷,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年舰涌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猖任。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舵稠,死狀恐怖超升,靈堂內(nèi)的尸體忽然破棺而出入宦,到底是詐尸還是另有隱情,我是刑警寧澤室琢,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布乾闰,位于F島的核電站,受9級(jí)特大地震影響盈滴,放射性物質(zhì)發(fā)生泄漏涯肩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一巢钓、第九天 我趴在偏房一處隱蔽的房頂上張望病苗。 院中可真熱鬧,春花似錦症汹、人聲如沸硫朦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咬展。三九已至,卻和暖如春瞒斩,著一層夾襖步出監(jiān)牢的瞬間破婆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工胸囱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祷舀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓烹笔,卻偏偏與公主長(zhǎng)得像裳扯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箕宙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • JVM內(nèi)存模型Java虛擬機(jī)(Java Virtual Machine=JVM)的內(nèi)存空間分為五個(gè)部分嚎朽,分別是: ...
    光劍書架上的書閱讀 2,509評(píng)論 2 26
  • 從三月份找實(shí)習(xí)到現(xiàn)在铺纽,面了一些公司柬帕,掛了不少,但最終還是拿到小米狡门、百度陷寝、阿里、京東其馏、新浪凤跑、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,243評(píng)論 11 349
  • 第一步叛复,了解JVM基本概念仔引,基本結(jié)構(gòu)扔仓。 第二步,了解JVM中線程私有區(qū)和公有區(qū)咖耘。 第三步翘簇,了解線程與Java內(nèi)存模...
    Arya鑫閱讀 1,194評(píng)論 0 10
  • 手機(jī)固執(zhí)地振動(dòng)著版保,看著手機(jī)屏幕上來電顯示的名字,我把拇指懸在接聽鍵和掛斷鍵之間的上空夫否,左右晃了好幾次彻犁,終究還是無奈...
    夏一年閱讀 976評(píng)論 7 18
  • 對(duì)于停工很久的設(shè)備而言,防銹是一項(xiàng)非常重要的工作凰慈。對(duì)于冶金起重機(jī)汞幢、門式起重機(jī)等起重機(jī)設(shè)備來說,久置的它們要如何進(jìn)行...
    起重工廠店閱讀 280評(píng)論 0 0