JVM

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域分區(qū)

借用百度百科圖片一張


JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域分區(qū)

程序計(jì)數(shù)器(PC寄存器)

  • 是一塊較小的內(nèi)存空間,可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器甚侣。(虛擬機(jī)的概念模型中感挥,字節(jié)碼解釋器依靠程序計(jì)數(shù)器的值來選擇下一條需要執(zhí)行的字節(jié)碼指令)
  • 為了線程切換后能恢復(fù)到正確的執(zhí)行位置谋作,每條線程都需要有一個(gè)獨(dú)立的程序計(jì)數(shù)器肢专,各線程之間計(jì)數(shù)器互不影響?yīng)毩?chǔ)存。由上圖也可知程序計(jì)數(shù)器為線程隔離的數(shù)據(jù)區(qū)阵面。
  • 程序計(jì)數(shù)器也是JVM運(yùn)行時(shí)數(shù)據(jù)分區(qū)唯一一個(gè)不會(huì)拋出OutOfMemoryError異常的區(qū)域

虛擬機(jī)棧

Java虛擬機(jī)棧(Java Virtual Machine Stacks)也是線程私有的闪萄,它的生命周期與線程相同。Java虛擬機(jī)棧為Java方法(也就是字節(jié)碼)服務(wù)迹蛤。

  • Java虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型:(使用了數(shù)據(jù)結(jié)構(gòu)中棧結(jié)構(gòu))
    • 每個(gè)方法在執(zhí)行時(shí)都會(huì)創(chuàng)建一個(gè)棧幀(Stack Frame)民珍。
    • 每個(gè)方法從調(diào)用直至執(zhí)行完成的過程中,就對(duì)應(yīng)一個(gè)棧幀從Java虛擬機(jī)棧中入棧到出棧的過程盗飒。
1.作用

存放java方法執(zhí)行時(shí)的所有的數(shù)據(jù)

2.組成

由棧幀組成嚷量,一個(gè)棧幀代表一個(gè)方法的執(zhí)行

  • 棧幀(Stack Frame):用于儲(chǔ)存局部變量表,操作數(shù)棧逆趣,動(dòng)態(tài)鏈接蝶溶,方法出口等信息。

    • 局部變量表:局部變量表中存放了編譯器可知的各種基本數(shù)據(jù)類型宣渗、對(duì)象引用和 returnAddress 類型抖所。局部變量表所需的內(nèi)存空間在編譯期間完成分配,當(dāng)進(jìn)入一個(gè)方法時(shí)痕囱,局部變量空間是固定的田轧,不會(huì)改變。
  • 在Java虛擬機(jī)規(guī)范中對(duì)Java虛擬機(jī)棧區(qū)域規(guī)定了二種異常:

    • 若線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的深度鞍恢,將拋出StackOverflowError異常傻粘。
    • 如果當(dāng)前Java虛擬機(jī)棧可以動(dòng)態(tài)擴(kuò)展帮掉,如果擴(kuò)展時(shí)無法申請(qǐng)到足夠的內(nèi)存弦悉,就會(huì)拋出OutOfMemoryError異常。

本地方法棧

本地方法棧(Native Method Stack) 本地方法棧為虛擬機(jī)使用到的Native方法服務(wù)旭寿。

  • 在虛擬機(jī)規(guī)范中對(duì)本地方法棧中方法使用的語言警绩、使用方式、數(shù)據(jù)結(jié)構(gòu)并沒有強(qiáng)制規(guī)定盅称,因此具體的虛擬機(jī)可以自由實(shí)現(xiàn)它肩祥。例如:Sun HotSpot虛擬機(jī)直接就把虛擬機(jī)棧與本地方法棧合二為一。

  • 拋出的異常同Java虛擬機(jī)棧一樣缩膝。

方法區(qū)

方法區(qū)(Method Area)是各個(gè)線程共享的內(nèi)存區(qū)域混狠,用于儲(chǔ)存已被虛擬機(jī)加載的類信息、常量疾层、靜態(tài)變量将饺、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。

  • Java虛擬機(jī)規(guī)范對(duì)堆的描述為:
    • 方法區(qū)是堆的一個(gè)邏輯部分,有一個(gè)別名Non-Heap(非堆)予弧,目的應(yīng)該是與Java堆區(qū)分開來刮吧。
    • 方法區(qū)和堆一樣不需要連續(xù)的內(nèi)存和可擴(kuò)展外,還可以不實(shí)現(xiàn)垃圾收集掖蛤。
  • 當(dāng)方法區(qū)無法滿足內(nèi)存分配需求時(shí)杀捻,將拋出OutOfMemoryError異常。

java堆

一般來說Java堆是Java虛擬機(jī)所管理的內(nèi)存中最大的一塊蚓庭。Java堆(Java Heap)是被所有線程共享的一塊內(nèi)存區(qū)域致讥,在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建。堆內(nèi)存也是GC內(nèi)存回收的主要區(qū)域

1.作用
  • 所有通過new所創(chuàng)建的對(duì)象的內(nèi)存器赞,都在堆中分配
2.特點(diǎn)
  • Java堆可以處在物理上不連續(xù)的內(nèi)存空間中垢袱,只要邏輯上是連續(xù)的即可。
  • 是虛擬機(jī)中最大的一塊內(nèi)存港柜,是GC要回收的部分请契,如果在堆中沒有內(nèi)存可供實(shí)例完成分配,并且堆也無法在擴(kuò)展時(shí)潘懊,將會(huì)拋出OutOfMemoryError異常姚糊。
3.分類
堆內(nèi)存分類
  • 新生代區(qū) 剛創(chuàng)建的對(duì)象會(huì)被加入到新生代區(qū),當(dāng)新生代區(qū)內(nèi)存不足的時(shí)候授舟,Jvm會(huì)通過一定的算法將新生代區(qū)的對(duì)象移到老生代區(qū)
  • 老生代區(qū)
  • 當(dāng)新生代區(qū)和老生代區(qū)都沒有足夠的內(nèi)存時(shí)救恨,Jvm會(huì)拋出OOM異常
  • 開發(fā)人員可以動(dòng)態(tài)的調(diào)整新生代區(qū)和老生代區(qū)的內(nèi)存大小
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市释树,隨后出現(xiàn)的幾起案子肠槽,更是在濱河造成了極大的恐慌,老刑警劉巖奢啥,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秸仙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡桩盲,警方通過查閱死者的電腦和手機(jī)寂纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赌结,“玉大人捞蛋,你說我怎么就攤上這事〖硪Γ” “怎么了拟杉?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)量承。 經(jīng)常有香客問我搬设,道長(zhǎng)穴店,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任拿穴,我火速辦了婚禮泣洞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贞言。我一直安慰自己斜棚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布该窗。 她就那樣靜靜地躺著,像睡著了一般蚤霞。 火紅的嫁衣襯著肌膚如雪酗失。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天昧绣,我揣著相機(jī)與錄音规肴,去河邊找鬼。 笑死夜畴,一個(gè)胖子當(dāng)著我的面吹牛拖刃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贪绘,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼兑牡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了税灌?” 一聲冷哼從身側(cè)響起均函,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菱涤,沒想到半個(gè)月后苞也,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粘秆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年如迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攻走。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡殷勘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陋气,到底是詐尸還是另有隱情劳吠,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布巩趁,位于F島的核電站痒玩,受9級(jí)特大地震影響淳附,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蠢古,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一奴曙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧草讶,春花似錦洽糟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘱丢,卻和暖如春薪介,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背越驻。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工汁政, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缀旁。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓记劈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親并巍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子目木,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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