運行時數(shù)據(jù)區(qū)

運行時數(shù)據(jù)區(qū)

事實上屡谐,JVM在執(zhí)行Java代碼時都會把內(nèi)存分為幾個部分筷登,即數(shù)據(jù)區(qū)來使用魂爪,這些區(qū)域都擁有自己的用途先舷,并隨著JVM進程的啟動或者用戶線程的啟動和結(jié)束建立和銷毀。如下圖大家應該很熟悉滓侍。


運行時數(shù)據(jù)區(qū)

程序計數(shù)器(Program Counter Register)

它所占用的內(nèi)存空間比較小蒋川,主要用于當前線程所執(zhí)行的字節(jié)碼的行號指示器,其實很好理解因為當我們線程切換的時候需要記錄當前線程執(zhí)行到什么地方撩笆,下一步該做什么捺球,其實可以類比一下操作系統(tǒng)中的程序計數(shù)器缸浦。由它的作用可想而知它是我們線程私有的一個數(shù)據(jù)區(qū)。
可能觸發(fā)的異常:程序計數(shù)器是在JVM規(guī)范中唯一個不會觸發(fā)OutOfMemoryError(內(nèi)存泄露錯誤氮兵,下文簡稱OOM)裂逐。

虛擬機棧(VM Stack)

它的數(shù)據(jù)結(jié)構(gòu)也就是我們常說的棧結(jié)構(gòu)。每個方法在執(zhí)行的同時都會開辟一段內(nèi)存區(qū)域用于存放方法運行時所需的數(shù)據(jù)泣栈,成為棧幀卜高,一個棧幀包含如:局部變量表、操作數(shù)棧南片、動態(tài)鏈接掺涛、方法出口等信息。其中局部變量表是在編譯期分配空間的疼进,運行期間是不變的薪缆。故而它也是線程私有的。也因為它是棧的結(jié)構(gòu)由棧先進后出的特性方法的執(zhí)行被調(diào)用的先執(zhí)行完后執(zhí)行調(diào)用方伞广。
可能觸發(fā)的異常:
1矮燎、如果線程請求的棧深度大于虛擬機所允許的深度,將拋出StackOverflowError異常赔癌。
2、如果在動態(tài)擴展內(nèi)存的時候無法申請到足夠的內(nèi)存澜沟,就會拋出OOM異常灾票。單線程下一般不可能被觸發(fā),多數(shù)在多線程的情況下被觸發(fā)OOM異常茫虽。
設(shè)置JVM參數(shù):"-Xss128k"(棧大小為128K)

本地方法棧

本地方法棧和虛擬機棧類似刊苍,不同的是虛擬機棧服務的是Java方法,而本地方法棧服務的是Native方法濒析。在HotSpot虛擬機實現(xiàn)中是把本地方法棧和虛擬機棧合二為一的正什,同理它也會拋出StackOverflowError異常和OOM異常。

堆(heap)

對于堆号杏,Java程序員都知道對象實例以及數(shù)組內(nèi)存都要在堆上分配婴氮。堆不再被線程所獨有而是線程所共享的一塊區(qū)域,它的確是用來存放對象實例盾致,也是垃圾回收GC的主要區(qū)域主经。實際上它還能細分為:新生代(Young Generation)、老年代(Old Generation)庭惜。對于新生代又分為Eden空間罩驻、From Survivor空間、To Survivor空間护赊。惠遏。
可能觸發(fā)的異常:堆申請的空間過大并且每個對象都有GC Root的指向不能被回收砾跃,會拋出OOM異常。
設(shè)置JVM參數(shù):"-Xms128M"(表示初始堆大小128M)节吮、"-Xmx2048M"(表示最大堆大小2048M)

方法區(qū)(Method Area)

它存儲的是已被虛擬機加載的類信息抽高、常量(從JDK7開始已經(jīng)移至堆內(nèi)存中)、靜態(tài)變量等數(shù)據(jù)课锌。它還有一個外號就是永久代(Permanent Generation)但是7及以后都在去掉永久代厨内。在JDK8則是純粹取消了方法區(qū)這個概念,取而代之的是”元空間(Metaspace)
可能觸發(fā)的異常:當方法區(qū)無法滿足內(nèi)存分配需求時渺贤,將拋出OutOfMemoryError異常雏胃。
設(shè)置JVM參數(shù):"-XX:MaxPermSize=256M"(表示方法區(qū)最大內(nèi)存為256M)在JDK8中變?yōu)榱?-XX:MetaspaceSize"和"-XX:MaxMetaspaceSize"來設(shè)置元空間的大小了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末志鞍,一起剝皮案震驚了整個濱河市瞭亮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌固棚,老刑警劉巖统翩,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異此洲,居然都是意外死亡厂汗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門呜师,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娶桦,“玉大人,你說我怎么就攤上這事汁汗≈云瑁” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵知牌,是天一觀的道長祈争。 經(jīng)常有香客問我,道長角寸,這世上最難降的妖魔是什么菩混? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮扁藕,結(jié)果婚禮上墨吓,老公的妹妹穿的比我還像新娘。我一直安慰自己纹磺,他們只是感情好帖烘,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橄杨,像睡著了一般秘症。 火紅的嫁衣襯著肌膚如雪照卦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天乡摹,我揣著相機與錄音役耕,去河邊找鬼。 笑死聪廉,一個胖子當著我的面吹牛瞬痘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播板熊,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼框全,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了干签?” 一聲冷哼從身側(cè)響起津辩,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎容劳,沒想到半個月后喘沿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡竭贩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年蚜印,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片留量。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡晒哄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肪获,到底是詐尸還是另有隱情,我是刑警寧澤柒傻,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布孝赫,位于F島的核電站,受9級特大地震影響红符,放射性物質(zhì)發(fā)生泄漏青柄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一预侯、第九天 我趴在偏房一處隱蔽的房頂上張望致开。 院中可真熱鬧,春花似錦萎馅、人聲如沸双戳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飒货。三九已至魄衅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塘辅,已是汗流浹背晃虫。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扣墩,地道東北人哲银。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像呻惕,于是被迫代替她去往敵國和親荆责。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354