java.lang.StackOverflowError: stack size 8MB(OOM问题)

错误原因

字面意思是: 堆栈溢出错误:堆栈大小为8MB 

说明此时程序 堆栈已经满了,超出了堆栈的最大容量,
多刷几次 还会出现如下错误:

OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available

内存溢出(OOM),没有可用的堆栈(系统已经不能再分配出你所需要的空间),甚至造成程序ANR,如下;
java.lang.StackOverflowError: stack size 8MB(OOM问题)_第1张图片

分析

对于内存溢出, 可能出现以下几种情况:

1、检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。

2、检查代码中是否有死循环或递归调用。

3、检查是否有大循环重复产生新对象实体。

4、检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。

启动程序刷几下出现我们开头的异常,大部分是第二种情况 方法的递归调用或死循环。

参考

深入理解java.lang.StackOverflowError和java.lang.OutOfMemoryError错误

对象转String过程中出现java.lang.StackOverflowError堆栈溢出错误的分析

你可能感兴趣的:(java)