本地方法棧和虛擬機棧溢出

1)如果線程請求的棧深度大於虛擬機所允許的最大深度,將拋出StackOverflowError異常。
2)如果虛擬機的棧內存允許動態擴展,當擴展棧容量無法申請到足夠的內存時,將拋出OutOfMemoryError異常。


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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章