Java內(nèi)存區(qū)域

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

記憶方式:“兩棧一堆”(虛擬機(jī)棧、本地方法棧、堆)+方法區(qū)+程序計(jì)數(shù)器

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

線程私有

  • 當(dāng)前線程所執(zhí)行字節(jié)碼的行號(hào)指示器九府。
  • 程序控制流的指示器(分支椎瘟、循環(huán)、跳轉(zhuǎn)侄旬、異常處理肺蔚、線程恢復(fù)等)
  • 該區(qū)域沒有規(guī)定任何OutOfMemoryError情況。

Java虛擬機(jī)棧

線程私有
StackOverflowError
OutOfMemoryError

虛擬機(jī)棧描述的是Java方法執(zhí)行的線程內(nèi)存模型:

每個(gè)方法執(zhí)行的時(shí)候儡羔,Java虛擬機(jī)都會(huì)同步創(chuàng)建一個(gè)棧幀宣羊,用于存儲(chǔ)局部變量表、操作數(shù)棧汰蜘、動(dòng)態(tài)連接仇冯、方法出口等信息。

每一個(gè)方法被調(diào)用直至執(zhí)行完畢的過程族操,就對(duì)應(yīng)著一個(gè)棧幀在虛擬機(jī)棧中從入棧到出棧的過程苛坚。

局部變量表

存放了編譯期可知的各種Java虛擬機(jī)

  • 基本數(shù)據(jù)類型( boolean、byte色难、char泼舱、short、int枷莉、long娇昙、float、double )
  • 對(duì)象引用(reference類型笤妙,它并不等同于對(duì)象本身冒掌,可能是一個(gè)指向?qū)ο笃鹗嫉刂返囊弥羔槪部赡苁侵赶蛞粋€(gè)代表對(duì)象的句柄或者其他與此對(duì)象相關(guān)的位置)
  • returnAddress類型(指向了一條字節(jié)碼指令的地址)

局部變量表所需的內(nèi)存空間在編譯期間完成分配危喉,當(dāng)進(jìn)入一個(gè)方法時(shí)宋渔,這個(gè)方法需要在棧幀中分配多大的局部變量空間是完全確定的,在方法運(yùn)行期間不會(huì)改變局部變量表的大小辜限。

本地方法棧

線程私有
StackOverflowError
OutOfMemoryError

本地方法棧與虛擬機(jī)棧發(fā)揮的作用時(shí)非常相似的皇拣,其區(qū)別:

  • 本地方法棧是為虛擬機(jī)使用到的本地(Native)方法服務(wù)。
  • 虛擬機(jī)棧為虛擬機(jī)執(zhí)行Java方法服務(wù)薄嫡。

Java堆

線程共享
存放對(duì)象實(shí)例

所有的對(duì)象實(shí)例以及數(shù)組都應(yīng)當(dāng)在堆上分配氧急。

垃圾收集器管理的內(nèi)存區(qū)域
OutOfMemoryError

方法區(qū)

線程共享
OutOfMemoryError
存儲(chǔ)已被虛擬機(jī)加載的類型信息、常量毫深、靜態(tài)變量吩坝、即時(shí)編譯器編譯后的代碼緩存等數(shù)據(jù)。
該區(qū)域的內(nèi)存回收目標(biāo)主要是針對(duì)常量池的回收和對(duì)類型的卸載哑蔫。

運(yùn)行時(shí)常量池

運(yùn)行時(shí)常量池是方法區(qū)的一部分钉寝。

Class文件中除了有類的版本弧呐、字段、方法嵌纲、接口等描述信息外俘枫,還有常量池表,用于存放編譯期生成的各種字面量與符號(hào)引用逮走,這部分內(nèi)容將在類加載后存放到方法區(qū)的運(yùn)行時(shí)常量池中鸠蚪。

運(yùn)行時(shí)常量池另一個(gè)重要的特征是具備動(dòng)態(tài)性,并非預(yù)置入Class文件中常量池的內(nèi)容才能進(jìn)入方法區(qū)運(yùn)行時(shí)常量池师溅,運(yùn)行期間也可以將新的常量放入池中茅信。

直接內(nèi)存

OutOfMemoryError
直接內(nèi)存并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分,也不是《Java虛擬機(jī)規(guī)范》中定義的內(nèi)存區(qū)域墓臭。

直接內(nèi)存:使用Native函數(shù)庫(kù)直接分配堆外內(nèi)存

在JDK1.4中心加入了NIO(New Input/Output)類蘸鲸,引入了一種基于通道(Channel)與緩沖區(qū)(Buffer)的I/O方式,它可以使用Native函數(shù)庫(kù)直接分配堆外內(nèi)存起便,然后通過一個(gè)存儲(chǔ)在Java堆里面的DirectByteBuffer對(duì)象為這塊內(nèi)存區(qū)域的引用進(jìn)行操作棚贾。這樣能在一些場(chǎng)景中顯著提高性能,因?yàn)楸苊饬嗽贘ava堆和Native堆中來回復(fù)制數(shù)據(jù)榆综。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妙痹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鼻疮,更是在濱河造成了極大的恐慌怯伊,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件判沟,死亡現(xiàn)場(chǎng)離奇詭異耿芹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挪哄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門吧秕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迹炼,你說我怎么就攤上這事砸彬。” “怎么了斯入?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵砂碉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我刻两,道長(zhǎng)增蹭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任磅摹,我火速辦了婚禮滋迈,結(jié)果婚禮上霎奢,老公的妹妹穿的比我還像新娘。我一直安慰自己饼灿,他們只是感情好椰憋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赔退,像睡著了一般。 火紅的嫁衣襯著肌膚如雪证舟。 梳的紋絲不亂的頭發(fā)上硕旗,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音女责,去河邊找鬼漆枚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抵知,可吹牛的內(nèi)容都是我干的墙基。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刷喜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼残制!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掖疮,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤初茶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后浊闪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恼布,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片按灶。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忧风,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藤违,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布堕伪,位于F島的核電站,受9級(jí)特大地震影響栗菜,放射性物質(zhì)發(fā)生泄漏欠雌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一疙筹、第九天 我趴在偏房一處隱蔽的房頂上張望富俄。 院中可真熱鬧禁炒,春花似錦、人聲如沸霍比。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悠瞬。三九已至们豌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浅妆,已是汗流浹背望迎。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凌外,地道東北人辩尊。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像康辑,于是被迫代替她去往敵國(guó)和親摄欲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354