總結目的
- 通過代碼驗證java虛擬機運行時區域存儲的內容;
- 工作中如果遇到內存溢出問題,能夠根據反饋的異常信息快速判斷哪個內存區域發生溢出
Java堆內存溢出
報錯信息:java.lang.OutOfMemoryError:Java heap space
原因可能是內存泄漏或者創建太多對象導致內存不足
Java虛擬機棧和本地方法區棧
報錯信息:
1.stackOverFlowError(棧的深度大於最大深度)
原因可能是方法遞歸調用過多
2.OutOfMemeoryError(擴展棧時無法申請到足夠的內存)
原因可能是系統內存不足,無法創建新的線程
Metaspace內存溢出
報錯信息:java.lang.OutOfMemoryError: Metaspace
原因可能是系統的代碼非常多或引用的第三方包非常多或者通過動態代碼生成類加載等方法
直接內存
報錯信息:java.lang.OutOfMemoryError
解決辦法