小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 

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

 

棧幀

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

 

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

 

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

 

不同于程序計(jì)數(shù)器,java虛擬機(jī)沒(méi)有寄存器,程序計(jì)數(shù)器也無(wú)法被程序指令直接訪問(wèn)。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)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(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)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多