![](http://static.javashuo.com/static/loading.gif)
Java虛擬機棧也是線程私有的 ,它的生命週期與線程相同。線程
![](http://static.javashuo.com/static/loading.gif)
- 當棧幀調用深度大於JVM所容許的範圍,
- 虛擬機棧描述的是Java方法執行的內存模型:
- 每一個方法在執行的同時都會建立一個棧幀用於存儲局部變量表、操做數棧、動態鏈表、方法出口信息等。
- 符號引用和直接引用在運行時進行解析和連接的過程,叫動態連接。
- 每個方法從調用直至執行完成的過程,就對應着一個棧幀在虛擬機棧中入棧到出棧的過程。
- 局部變量表
- 存放了編譯器可知的各類基本數據類型(boolean、byte、char、short、int、float、long、double)、
- 對象引用
- returnAddress類型(指向了一條字節碼指令的地址)。
- 若是擴展時沒法申請到足夠的內存,
- 本地方法棧(瞭解)
- 本地方法棧與虛擬機的做用類似,
- 不一樣之處在於虛擬機棧爲虛擬機執行的Java方法服務,
- 而本地方法棧則爲虛擬機使用到的Native方法服務。
- 有的虛擬機直接把本地方法棧和虛擬機棧合二爲一。
- 會拋出stackOverflowError和OutOfMemoryError異常。