天天看點

JAVA基礎——JVM之Java虛拟機棧Java 虛拟機棧

Java 虛拟機棧

​ 虛拟機棧描述的是 Java 方法執行的動态記憶體模型

虛拟機棧的内容

棧幀

​ 在 Java 程式中的每個方法執行時,都會建立一個棧幀,伴随着方法從建立到執行完成,用于存儲局部變量表、操作數棧、動态連結、方法出口等

​ 虛拟機棧是存在大小的,當方法所占用的空間溢出,會産生 StackOverflowError

局部變量表

​ 局部表量表的記憶體空間在編譯期即完成配置設定,主要儲存函數的參數以及局部的變量資訊,局部變量表中的變量作用域是目前調用的函數,函數調用結束後,随着函數棧幀的銷毀,局部變量表也随之銷毀,釋放空間

​ 局部變量表的最小存儲機關是變量槽(Slot),槽的大小與作業系統位數相同,可以放下作業系統位數以内的資料類型

操作數棧

​ 操作數棧可了解為java虛拟機棧中的一個用于計算的臨時資料存儲區,局部變量表使用索引,操作數棧是通過出棧、入棧來通路,存儲的資料與局部變量表一緻含 int、long、float、double、reference、returnType,操作數棧中 byte、short、char 壓棧前會被轉為 int