原因
原因1:递归导致
,死循环或者无限循环调用,多个实体类之间有多对一、多对多 关系时,重写toString方法的时候一定要注意,不要两个有对应关系的实体类都重写相关联属性字段的toString方法,这样会导致一直递归重写下去,内存当然会被耗尽,导致栈溢出
- 造成我查你你查我,循环往复,就形成了递归,进而引起stackoverflow。
- 细致的检查报错信息,找出行号的重复模式。这些重复的行号代表了被递归调用的代码。仔细审查代码,理解为何递归不终止。
原因2:栈的大小有点下导致,修改-Xss参数,这个参数可以在项目配置或命令行指定
- 确认递归实现没有问题,再去修改-Xss参数
我的错误原因是原因1,我首先是增加的-Xss参数,后来发现还是报错,后来仔细检查,才知道是产生了死循环,所以,大家一定要检查仔细了
复现
public class StackOverflowErrorExample {
public static void main(String args[]) {
a();
}
public static void a() {
a();
}
}
a() 方法将无限入栈,直至栈溢出,耗尽线程栈空间,异常信息如下文章来源:https://www.toymoban.com/news/detail-454127.html
Exception in thread "main" java.lang.StackOverflowError
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
at StackOverflowErrorExample.a(StackOverflowErrorExample.java:6)
查看博客1:https://cloud.tencent.com/developer/article/1503192
参考博客2:https://www.jianshu.com/p/e4e224b87aa3文章来源地址https://www.toymoban.com/news/detail-454127.html
到了这里,关于解决java.lang.StackOverflowError错误(栈溢出异常)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!