學妹問我:我遇到了OutOfMemoryError異常怎麼辦?

廢物二號發表於2020-09-26

除了程式計數器外,虛擬機器記憶體的其他幾個執行時區域都有發生OutOfMemoryError(下文稱OOM)異常的可能

java堆溢位

堆在動態擴充套件的時候,超過最大值-Xmx引數,就會觸發OutOfMemoryError異常
堆的最小值-Xms引數與最大值-Xmx設定的引數 設定為一樣即可避免堆自動擴充套件

while (true) {
list.add(new OOMObject());
}

虛擬機器棧和本地方法棧溢位

在熱點虛擬機器中,因為上述兩個棧不能動態擴充套件,所以沒有OutOfMemoryError錯誤,會出現StackOver-flowError

方法區和執行常量池溢位
本機直接記憶體溢位

相關文章