日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

深入java虛擬機(jī)第5章, 棧

 goldbomb 2009-01-09

深入java虛擬機(jī)第5章, 棧

關(guān)鍵字: jvm

java棧

每當(dāng)啟動(dòng)一個(gè)新線程的時(shí)候,java虛擬機(jī)都會(huì)為它分配一個(gè)java棧。java以棧幀為單位保存線程的運(yùn)行狀態(tài)。虛擬機(jī)只會(huì)對(duì)java棧執(zhí)行兩種操作:以棧幀為單位的壓棧或者出棧。

 

java方法可以通過兩種方式完成,一種通過return返回,成為正常返回;一種通過拋出異常而異常終止 。虛擬機(jī)都會(huì)將當(dāng)前棧彈出java棧然后釋放掉,這樣上一個(gè)方法的棧幀就是當(dāng)前棧幀了。

 

java棧上是此對(duì)應(yīng)的java線程所私有的。因此不存在多線程情況下棧數(shù)據(jù)訪問同步的問題。

 

棧幀

棧幀由三部分組成:局部變量區(qū),操作數(shù)棧和幀數(shù)據(jù)區(qū)。 局部變量區(qū)和操作數(shù)棧要視對(duì)應(yīng)的方法而定,它們是按照字長(zhǎng)計(jì)算的。

 

局部變量區(qū): java棧幀的局部變量區(qū)被組織為一個(gè)以字長(zhǎng)為單位,從0開始計(jì)數(shù)的數(shù)組。字節(jié)碼指令通過從0開始的索引來使用其中的數(shù)據(jù)。類型為int,float,reference和returnaddress的值在數(shù)組中只占一項(xiàng),而類型為byte,short和char的值在存入數(shù)組前都將被轉(zhuǎn)換為int。但是long和double類型在數(shù)組中卻占據(jù)連續(xù)的兩項(xiàng)。

 

操作數(shù)棧和局部變量區(qū)一樣。也被組織成一個(gè)以字長(zhǎng)為單位的數(shù)組。但是不是通過索引來訪問,而是通過標(biāo)準(zhǔn)棧操作--壓棧和出棧來訪問。

 

不同于程序計(jì)數(shù)器,java虛擬機(jī)沒有寄存器,程序計(jì)數(shù)器也無法被程序指令直接訪問。java虛擬機(jī)是由操作數(shù)棧而不是從寄存器中取得操作數(shù)的,因此它的運(yùn)行方式是基于棧的而不是基于寄存器的。

 

虛擬機(jī)把操作數(shù)棧作為它的工作區(qū)--大多數(shù)指令都要從這里彈出數(shù)據(jù),執(zhí)行運(yùn)算,然后把結(jié)果壓回操作數(shù)棧。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多