解决java.lang.StackOverflowError错误(栈溢出异常)

原因
原因1:递归导致,死循环或者无限循环调用,多个实体类之间有多对一、多对多 关系时,重写toString方法的时候一定要注意,不要两个有对应关系的实体类都重写相关联属性字段的toString方法,这样会导致一直递归重写下去,内存当然会被耗尽,导致栈溢出

造成我查你你查我,循环往复,就形成了递归,进而引起stackoverflow。
细致的检查报错信息,找出行号的重复模式。这些重复的行号代表了被递归调用的代码。仔细审查代码,理解为何递归不终止。

原因2:栈溢出错误通常是由于方法调用的递归深度过大而导致的。每当调用一个方法时,都会将方法的返回地址和局部变量等信息保存在栈中。如果递归调用没有终止条件或终止条件有误,那么每次递归调用都会在栈中保存一份新的方法调用信息,最终导致栈空间耗尽,从而触发栈溢出错误。 数据传送list集合分阶段传送要调用list.clear();方法释放掉内存解决栈溢出问题


原因3:栈的大小有点下导致,修改-Xss参数,这个参数可以在项目配置或命令行指定

确认递归实现没有问题,再去修改-Xss参数
我的错误原因是原因1,我首先是增加的-Xss参数,后来发现还是报错,后来仔细检查,才知道是产生了死循环,所以,大家一定要检查仔细了
 

你可能感兴趣的:(异常报错,java,开发语言)