一、JVM 內存模型
根據 JVM 規范,JVM 內存共分為虛擬機棧、堆、方法區、程序計數器、本地方法棧五個部分。
1、虛擬機棧:每個線程有一個私有的棧,隨著線程的創建而創建。棧裡面存著的是一種叫“棧幀”的東西,每個方法會創建一個棧幀,棧幀中存放了局部變量表(基本數據類型和對象引用)、操作數棧、方法出口等信息。棧的大小可以固定也可以動態擴展。當棧調用深度大於JVM所允許的范圍,會拋出StackOverflowError的錯誤,不過這個深度范圍不是一個恆定的值,我們通過下面這段程序可以測試一下這個結果: