Java面試必備之Java虛擬機(jī)方法區(qū)

各位父老鄉(xiāng)親兄弟姐妹們。周末到了灿渴,講道理今天不應(yīng)該跟大家聊這種索然無味的技術(shù)梗洛波。但是既然開了頭不能虎頭蛇尾的。也到了這個(gè)系列的最后一塊——方法區(qū)骚露。昨天我們也預(yù)告了蹬挤,那既然放出話了就肯定要把諾言實(shí)現(xiàn)。我們今天就把這個(gè)系列給完結(jié)了棘幸。今天我們來聊聊JVM中的方法區(qū)(Method Area)焰扳。

Java面試必備之Java虛擬機(jī)方法區(qū)

方法區(qū)概述

我們用幾個(gè)點(diǎn)來概括一下方法區(qū)是個(gè)什么東西和有什么用途。
方法區(qū)跟昨天介紹的堆都是各線程共享的內(nèi)存區(qū)域误续。方法區(qū)主要是存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息因惭、常量环疼、靜態(tài)變量暂衡、即時(shí)編譯器編譯后的代碼和數(shù)據(jù)青自。

Java虛擬機(jī)中也有把方法區(qū)描述為堆的一個(gè)邏輯部分,但是它有一個(gè)別名叫做Non-Heap【非堆】栽烂,目的就是與Java堆區(qū)分開來躏仇。

對(duì)HotSpot虛擬機(jī)開發(fā)者來說,方法區(qū)也稱為是永久代(Permanent Generation),其實(shí)在本質(zhì)上二者不等價(jià)腺办,僅僅是因?yàn)镠otSpot的團(tuán)隊(duì)把GC分代收集擴(kuò)展至方法區(qū)焰手,或者說使用永久代來實(shí)現(xiàn)方法區(qū)。節(jié)省了專門為方法區(qū)編寫內(nèi)存管理代碼的工作菇晃。

對(duì)于其他虛擬機(jī)(BEA JRockit册倒、IBM J9等)來說是不存在永久代的概念。

使用永久代來實(shí)現(xiàn)方法區(qū)更容易出現(xiàn)內(nèi)存溢出問題(永久代有-XX:MaxPermSize的上限,J9和JRockit只要沒有觸碰到進(jìn)程可用的內(nèi)存上限就不會(huì)出現(xiàn)問題)磺送。

當(dāng)方法區(qū)無法滿足內(nèi)存分配的需求時(shí)驻子,將拋出OutOfMemoryError異常,這時(shí)候你的程序一般也就掛了估灿。

Java虛擬機(jī)規(guī)范對(duì)于方法區(qū)的限制非常寬松崇呵。只要滿足下面的三個(gè)條件即可:

不需要連續(xù)內(nèi)存

可選擇固定大小或者可擴(kuò)展

不實(shí)現(xiàn)垃圾收集

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

運(yùn)行時(shí)常量池是方法區(qū)的一部分。用于存放編譯期生成的各種字面量和符號(hào)引用馅袁,這部分內(nèi)容將在類加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池域慷。

Java虛擬機(jī)對(duì)于Class文件的每一部分的格式都有嚴(yán)格規(guī)定,但是對(duì)于運(yùn)行時(shí)常量池Java虛擬機(jī)規(guī)范沒有做出任何細(xì)節(jié)的要求。

一般來說犹褒,除了保存Class文件中描述的符號(hào)引用外抵窒,還會(huì)把翻譯出來的直接引用也存儲(chǔ)在運(yùn)行時(shí)常量池。

運(yùn)行時(shí)常量池相對(duì)于Class文件常量池的另一個(gè)重要的特征是動(dòng)態(tài)性叠骑。運(yùn)行期間也可能將新的常亮放到池中李皇。

運(yùn)行時(shí)常量池是方法區(qū)的一部分。也會(huì)出現(xiàn)OutOfMemoryError宙枷。

到這里我們關(guān)于JVM的所有區(qū)域介紹都已經(jīng)說完了掉房。下面我們把剩下的最后的一個(gè)跟JVM虛擬機(jī)有類似的功能。也是大家經(jīng)常見到的區(qū)塊——直接內(nèi)存慰丛。嚴(yán)格意義上來說直接內(nèi)存跟JVM無關(guān)卓囚。但是我們還是提一提吧。在特定的功能下還是很有了解的必要的诅病。
直接內(nèi)存(Direct Memory)
直接內(nèi)存并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分哪亿。也不是Java虛擬機(jī)規(guī)范中定義的內(nèi)存區(qū)域。

JDK1.4新加入的NIO類贤笆,引入了基于通道(Channel)與緩沖區(qū)(Buffer)的I/O方式锣夹。它可以使用Native函數(shù)庫直接分配堆外內(nèi)存。然后通過一個(gè)存儲(chǔ)在Java堆中的DirectByteBuffer對(duì)象作為這塊內(nèi)存的引用進(jìn)行操作苏潜。

直接內(nèi)存的分配不會(huì)受到Java堆大小的限制。但是會(huì)受到本機(jī)總內(nèi)存大小以及處理器尋址空間的限制变勇。

到這里我們所有的關(guān)于JVM的介紹都已經(jīng)說完了恤左。這周的工作時(shí)間內(nèi)都在總結(jié)這幾塊的關(guān)系。后面我們會(huì)對(duì)各種工作中遇到的問題總結(jié)出來分享給大家搀绣。希望大家別踩我踩過的坑飞袋。也祝大家周末愉快。
我的文章每天都會(huì)在頭條號(hào)首發(fā)链患,然后第二天轉(zhuǎn)發(fā)到簡書中巧鸭,希望有興趣的朋友可以關(guān)注我的頭條號(hào):[Bug制造機(jī)]
(https://www.toutiao.com/c/user/51553105950/#mid=1582105392193550)。謝謝大家的支持麻捻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纲仍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贸毕,更是在濱河造成了極大的恐慌郑叠,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件明棍,死亡現(xiàn)場離奇詭異乡革,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門沸版,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘁傀,“玉大人,你說我怎么就攤上這事视粮∠赴欤” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵馒铃,是天一觀的道長蟹腾。 經(jīng)常有香客問我,道長区宇,這世上最難降的妖魔是什么娃殖? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮议谷,結(jié)果婚禮上炉爆,老公的妹妹穿的比我還像新娘。我一直安慰自己卧晓,他們只是感情好芬首,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逼裆,像睡著了一般郁稍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胜宇,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天耀怜,我揣著相機(jī)與錄音,去河邊找鬼桐愉。 笑死财破,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的从诲。 我是一名探鬼主播左痢,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼系洛!你這毒婦竟也來了俊性?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤描扯,失蹤者是張志新(化名)和其女友劉穎磅废,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荆烈,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拯勉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年竟趾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宫峦。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岔帽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出导绷,到底是詐尸還是另有隱情犀勒,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布妥曲,位于F島的核電站贾费,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏檐盟。R本人自食惡果不足惜褂萧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葵萎。 院中可真熱鬧导犹,春花似錦、人聲如沸羡忘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卷雕。三九已至节猿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漫雕,已是汗流浹背沐批。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝎亚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓先馆,卻偏偏與公主長得像发框,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煤墙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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