Java面試必備之JVM虛擬機棧

昨天跟大家聊過了關(guān)于JVM的程序計數(shù)器的細(xì)節(jié)實現(xiàn)涯竟。相比大家覺得程序計數(shù)器也不過如此吧。其實技術(shù)本無難點庐船。故若高深也會讓人感覺虛無縹緲。落入實地其實也就了了揩瞪。
那今天我們開始介紹JVM的第二個重要的組成部分——棧(JAVA STACK)。

Java面試必備之JVM虛擬機棧

是什么

棧是和線程一致的內(nèi)存空間且線程私有李破。也就是說它的生命周期是和線程是一致的壹将。當(dāng)一個方法開始執(zhí)行的時候會同事在棧空間里面創(chuàng)建一個棧幀【Stack Frame】來存儲局部變量表诽俯、操作數(shù)棧、動態(tài)鏈接暴区、方法出口等信息。
每一個方法從調(diào)用直至執(zhí)行完成的過程其實在棧中都是有一個對應(yīng)的棧幀在虛擬機棧中同樣的入棧到出棧的過程偷俭。
棧的數(shù)據(jù)結(jié)構(gòu)
局部變量表:中的局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean缰盏、char淹遵、short、int透揣、float川抡、long辐真、double)注意:long和double是64位的長度崖堤,要占用2個局部變量空間。其余數(shù)據(jù)類型只要占用1個密幔。

對象引用(reference類型,它不等同于對象本身昧廷,可能是一個指向?qū)ο笃鹗嫉刂返囊弥羔樫梭铮部赡苁侵赶蛞粋€代表對象的句柄或其他與此對象相關(guān)的位置)和returnAddress類型(指向了一條字節(jié)碼指令的地址)木柬。

動態(tài)鏈接:在運行時創(chuàng)建的直接引用稱為動態(tài)鏈接淹办。即程序在編譯成.class文件后會有一系列的引用。這些是靜態(tài)引用齐遵。而在運行時才創(chuàng)建的引用稱為動態(tài)引用。

方法出口:方法出口分為兩種。第一種方式是執(zhí)行引擎遇到任意一個方法返回的字節(jié)碼指令拓哟,這時候可能會有返回值傳遞給上層的方法調(diào)用者;另外一種退出方式是流纹,在方法執(zhí)行過程中遇到了異常,并且這個異常沒有在方法體內(nèi)得到處理漱凝,無論是Java虛擬機內(nèi)部產(chǎn)生的異常诸迟,還是代碼中使用athrow字節(jié)碼指令產(chǎn)生的異常茸炒,只要在本方法的異常表中沒有搜索到匹配的異常處理器,就會導(dǎo)致方法退出感论。

棧的異常

如果線程請求的棧深度大于虛擬機所允許的深度紊册。會拋出StackOverFlowError異常比肄。

如果虛擬機棧擴展是無法申請到足夠的內(nèi)存囊陡,就會拋出OutOfMemioryError異常

今天對于棧的分析就是以上的內(nèi)容。以上內(nèi)容其實還沒有深入到虛擬機中棧的數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)示括。但是對于了解JVM棧的結(jié)構(gòu)和狀態(tài)已經(jīng)是足夠滿足要求了。各位如果有補充的可以留言交流垛膝。也希望各位不吝賜教丁稀。今天的內(nèi)容就到這里了吼拥。明天還有對于JVM的后續(xù)介紹线衫。

我的文章每天都會在頭條號首發(fā),然后第二天轉(zhuǎn)發(fā)到簡書中枯跑,希望有興趣的朋友可以關(guān)注我的頭條號:[Bug制造機]
(https://www.toutiao.com/c/user/51553105950/#mid=1582105392193550)。謝謝大家的支持敛助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屋确,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子攻臀,更是在濱河造成了極大的恐慌,老刑警劉巖堡赔,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件设联,死亡現(xiàn)場離奇詭異灼捂,居然都是意外死亡,警方通過查閱死者的電腦和手機纵东,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門啥寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辑甜,你說我怎么就攤上這事×状祝” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵淌友,是天一觀的道長骇陈。 經(jīng)常有香客問我,道長你雌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任拨拓,我火速辦了婚禮,結(jié)果婚禮上渣磷,老公的妹妹穿的比我還像新娘颤绕。我一直安慰自己幸海,他們只是感情好奥务,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布袜硫。 她就那樣靜靜地躺著,像睡著了一般帚称。 火紅的嫁衣襯著肌膚如雪官研。 梳的紋絲不亂的頭發(fā)上闯睹,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音始花,去河邊找鬼。 笑死酷宵,一個胖子當(dāng)著我的面吹牛躬窜,可吹牛的內(nèi)容都是我干的浇垦。 我是一名探鬼主播荣挨,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼此虑!你這毒婦竟也來了厕倍?” 一聲冷哼從身側(cè)響起寡壮,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤讹弯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后棒仍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡莫其,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年耸三,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憨颠。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爽彤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情适篙,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布聂儒,位于F島的核電站,受9級特大地震影響薄货,放射性物質(zhì)發(fā)生泄漏碍论。R本人自食惡果不足惜谅猾,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一鳍悠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敬矩,春花似錦、人聲如沸弧岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勤家。三九已至,卻和暖如春伐脖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讼庇。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留认烁,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓却嗡,卻偏偏與公主長得像嘹承,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叹卷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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