开发者社区 问答 正文

遇到 StackOverflowError 怎么解决?java报错

遇到 StackOverflowError 怎么解决?java报错

在编写java的样例代码时出现这种问题。这种情况应该如何解决和避免那?

完整的错误信息:

java.lang.StackOverflowError : Thread Stack space

原因是什么,为什么会发生异常,以及下面到底发生了什么。如果有人能帮忙?提前谢谢

展开
收起
爱吃鱼的程序员 2020-05-26 15:09:04 719 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    楼主。看了你的错误信息,很明显根据提示可以知道,错误是因为栈溢出.栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的。函数的调用过程都体现在堆栈和退栈上了。调用构造函数的 “层”太多了,以致于把栈区溢出了。 通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要 1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间。通常栈的大小是1-2MB的。通俗一点讲就是单线程的程序需要的内存太大了。 通常递归也不要递归的层次过多,很容易溢出。 解决方法:1:修改程序。2:通过 -Xss: 来设置每个线程的Stack大小即可。

    2020-05-26 15:27:51
    赞同 展开评论
问答分类:
问答地址: