OOM--OUT OF MEMORY

weixin_34189116發表於2017-10-16

java.lang.OutOfMemoryError: Java heap space ------>java堆記憶體溢位,此種情況最常見,一般由於記憶體洩露或者堆的大小設定不當引起。對於記憶體洩露,需要通過記憶體監控軟體查詢程式中的洩露程式碼,而堆大小可以通過虛擬機器引數-Xms,-Xmx等修改。

java.lang.OutOfMemoryError: PermGen space ------>java永久代溢位,即方法區溢位了,一般出現於大量Class或者jsp頁面,或者採用cglib等反射機制的情況,因為上述情況會產生大量的Class資訊儲存於方法區。此種情況可以通過更改方法區的大小來解決,使用類似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。另外,過多的常量尤其是字串也會導致方法區溢位。

java.lang.StackOverflowError ------> 不會拋OOM error,但也是比較常見的Java記憶體溢位。JAVA虛擬機器棧溢位,一般是由於程式中存在死迴圈或者深度遞迴呼叫造成的,棧大小設定太小也會出現此種溢位。可以通過虛擬機器引數-Xss來設定棧的大小。

相關文章