java筆記-自動內(nèi)存管理機(jī)制

Java虛擬機(jī)把他管理的內(nèi)存分成幾個不同的數(shù)據(jù)區(qū)域-來源<深入了解java虛擬機(jī)>

如圖:

程序計數(shù)器:

“程序計數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間磕谅,它可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器咧纠。在虛擬機(jī)的概念模型里(僅是概念模型突诬,各種虛擬機(jī)可能會通過一些更高效的方式去實(shí)現(xiàn))厘贼,字節(jié)碼解釋器工作時就是通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支蜒程、循環(huán)、跳轉(zhuǎn)伺帘、異常處理昭躺、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個計數(shù)器來完成∥奔蓿”

Java虛擬機(jī)棧:

“與程序計數(shù)器一樣领炫,Java虛擬機(jī)棧(Java Virtual Machine Stacks)也是線程私有的,它的生命周期與線程相同张咳。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀(Stack Frame[1])用于存儲局部變量表驹吮、操作數(shù)棧、動態(tài)鏈接晶伦、方法出口等信息。每一個方法從調(diào)用直至執(zhí)行完成的過程啄枕,就對應(yīng)著一個棧幀在虛擬機(jī)棧中入棧到出棧的過程婚陪。”

“經(jīng)常有人把Java內(nèi)存區(qū)分為堆內(nèi)存(Heap)和棧內(nèi)存(Stack)频祝,這種分法比較粗糙泌参,Java內(nèi)存區(qū)域的劃分實(shí)際上遠(yuǎn)比這復(fù)雜脆淹。這種劃分方式的流行只能說明大多數(shù)程序員最關(guān)注的、與對象內(nèi)存分配關(guān)系最密切的內(nèi)存區(qū)域是這兩塊沽一。其中所指的“堆”筆者在后面會專門講述盖溺,而所指的“棧”就是現(xiàn)在講的虛擬機(jī)棧铣缠,或者說是虛“擬機(jī)棧中局部變量表部分烘嘱。

局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean、byte蝗蛙、char蝇庭、short、int捡硅、float哮内、long、double)壮韭、對象引用(reference類型北发,它不等同于對象本身,可能是一個指向?qū)ο笃鹗嫉刂返囊弥羔樑缥荩部赡苁侵赶蛞粋€代表對象的句柄或其他與此對象相關(guān)的位置)和returnAddress類型(指向了一條字節(jié)碼指令的地址)琳拨。”

本地方法棧:

“本地方法棧(Native Method Stack)與虛擬機(jī)棧所發(fā)揮的作用是非常相似的逼蒙,它們之間的區(qū)別不過是虛擬機(jī)棧為虛擬機(jī)執(zhí)行Java方法(也就是字節(jié)碼)服務(wù)从绘,而本地方法棧則為虛擬機(jī)使用到的Native方法服務(wù)。在虛擬機(jī)規(guī)范中對本地方法棧中方法使用的語言是牢、使用方式與數(shù)據(jù)結(jié)構(gòu)并沒有強(qiáng)制規(guī)定僵井,因此具體的虛擬機(jī)可以自由實(shí)現(xiàn)它。甚至有的虛擬機(jī)(譬如Sun HotSpot虛擬機(jī))直接就把本地方法棧和虛擬機(jī)棧合二為一驳棱∨玻”

Java堆:

“對于大多數(shù)應(yīng)用來說,Java堆(Java Heap)是Java虛擬機(jī)所管理的內(nèi)存中最大的一塊社搅。Java堆是被所有線程共享的一塊內(nèi)存區(qū)域驻债,在虛擬機(jī)啟動時創(chuàng)建。此內(nèi)存區(qū)域的唯一目的就是存放對象實(shí)例形葬,幾乎所有的對象實(shí)例都在這里分配內(nèi)存合呐。這一點(diǎn)在Java虛擬機(jī)規(guī)范中的描述是:所有的對象實(shí)例以及數(shù)組都要在堆上分配[1],但是隨著JIT編譯器的發(fā)展與逃逸分析技術(shù)逐漸成熟笙以,棧上分配淌实、標(biāo)量替換[2]優(yōu)化技術(shù)將會導(dǎo)致一些微妙的變化發(fā)生,所有的對象都分配在堆上也漸漸變得不是那么“絕對”了〔鹌恚”

方法區(qū):

“方法區(qū)(Method Area)與Java堆一樣恨闪,是各個線程共享的內(nèi)存區(qū)域,它用于存儲已被虛擬機(jī)加載的類信息放坏、常量咙咽、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)淤年。雖然Java虛擬機(jī)規(guī)范把方法區(qū)描述為堆的一個邏輯部分钧敞,但是它卻有一個別名叫做Non-Heap(非堆),目的應(yīng)該是與Java堆區(qū)分開來互亮±缦恚”

運(yùn)行時常量池:

“運(yùn)行時常量池(Runtime Constant Pool)是方法區(qū)的一部分。Class文件中除了有類的版本豹休、字段炊昆、方法、接口等描述信息外威根,還有一項信息是常量池(Constant Pool Table)凤巨,用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將在類加載后進(jìn)入方法區(qū)的運(yùn)行時常量池中存放洛搀「易拢”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市留美,隨后出現(xiàn)的幾起案子彰檬,更是在濱河造成了極大的恐慌,老刑警劉巖谎砾,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逢倍,死亡現(xiàn)場離奇詭異,居然都是意外死亡景图,警方通過查閱死者的電腦和手機(jī)较雕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挚币,“玉大人,你說我怎么就攤上這事妆毕∩骶粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵笛粘,是天一觀的道長凄吏。 經(jīng)常有香客問我远舅,道長,這世上最難降的妖魔是什么痕钢? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮序六,結(jié)果婚禮上任连,老公的妹妹穿的比我還像新娘。我一直安慰自己例诀,他們只是感情好随抠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著繁涂,像睡著了一般拱她。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扔罪,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天秉沼,我揣著相機(jī)與錄音,去河邊找鬼矿酵。 笑死唬复,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的全肮。 我是一名探鬼主播敞咧,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辜腺!你這毒婦竟也來了休建?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤评疗,失蹤者是張志新(化名)和其女友劉穎测砂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壤巷,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邑彪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胧华。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寄症。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矩动,靈堂內(nèi)的尸體忽然破棺而出有巧,到底是詐尸還是另有隱情,我是刑警寧澤悲没,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布篮迎,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甜橱。R本人自食惡果不足惜逊笆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岂傲。 院中可真熱鬧难裆,春花似錦、人聲如沸镊掖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亩进。三九已至症虑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間归薛,已是汗流浹背谍憔。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苟翻,地道東北人韵卤。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像崇猫,于是被迫代替她去往敵國和親沈条。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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

  • 寫在前面本文介紹的Java虛擬機(jī)(JVM)的自動內(nèi)存管理機(jī)制主要是參照《深入理解Java虛擬機(jī)》(第2版)一書中的...
    EakonZhao閱讀 4,243評論 5 48
  • 從三月份找實(shí)習(xí)到現(xiàn)在诅炉,面了一些公司蜡歹,掛了不少,但最終還是拿到小米涕烧、百度月而、阿里、京東议纯、新浪父款、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,243評論 11 349
  • JVM內(nèi)存模型Java虛擬機(jī)(Java Virtual Machine=JVM)的內(nèi)存空間分為五個部分瞻凤,分別是: ...
    光劍書架上的書閱讀 2,509評論 2 26
  • 我看到綠葉在春天的狂風(fēng)中分離憨攒,在這黃土漫天的空氣里摒住呼吸,狠踩油門加速飛奔阀参,感受到了這廣袤天地間的變幻莫測肝集,讓人...
    Goger閱讀 189評論 0 0
  • 一直希望可以有機(jī)會靜下心來寫自己真正想寫的東西,讀自己真正想讀的是捞挥,看清真正的自己浮创。 經(jīng)過了這么長時間的...
    豆豆敦兒閱讀 189評論 0 0