1)如果線程請求的棧深度大於虛擬機所允許的最大深度,將拋出StackOverflowError異常。
2)如果虛擬機的棧內存允許動態擴展,當擴展棧容量無法申請到足夠的內存時,將拋出OutOfMemoryError異常。
《Java虛擬機規範》明確允許Java虛擬機實現自行選擇是否支持棧的動態擴展,而HotSpot虛擬機的選擇是不支持擴展,所以除非在創建線程申請內存時就因無法獲得足夠內存而出現OutOfMemoryError異常,否則在線程運行時是不會因爲擴展而導致內存溢出的,只會因爲棧容量無法容納新的棧幀而導致StackOverflowError異常。