文章出處

Java虛擬機棧的特征

線程私有

后進先出(LIFO)棧

存儲棧幀,支持Java方法的調用、執行和退出

可能出現OutOfMemoryError異常和StackOverflowError異常

 

Java本地方法棧的特征

線程私有

后進先出(LIFO)棧

作用是支撐Native方法的調用、執行和退出

可能出現OutOfMemoryError異常和StackOverflowError異常

有一些虛擬機(如HotSpot)將Java虛擬機棧和本地方法棧合并實現

 

棧幀的概念和特征

Java虛擬機棧中存儲的內容,它被用于存儲數據和部分過程結果的數據結構,同時也被用來處理動態鏈接、方法返回值和異常分派

一個完整的棧幀包含:局部變量表、操作數棧、動態連接信息、方法正常完成信息和方法異常完成信息

 

局部變量表概念和特征

由若干個Slot組成,長度由編譯期決定

單個Slot可以存儲一個類型為boolean,byte,char,short,float,reference和returnAddress的數據,兩個Slot可以存儲一個類型為long或double的數據

局部變量表用于方法間參數傳遞,以及方法執行過程中存儲基礎數據類型的值和對象的引用

 

操作數棧的概念和特征

是一個后進先出棧,由若干個Entry組成,長度由編譯期決定

單個Entry即可以存儲一個Java虛擬機中定義的任意數據類型的值,包括long和double類型,但是存儲long和double類型的Entry深度為2,其他類型的深度為1

在方法執行過程中,棧幀用于存儲計算參數和計算結果;在方法調用時,操作數棧也用來準備調用方法的參數以及接收方法返回結果 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()