解决java.lang.StackOverflowError错误(栈溢出异常)_java栈溢出的原因及解决办法-程序员宅基地

技术标签: java  BugSolve  开发语言  

原因

原因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() 方法将无限入栈,直至栈溢出,耗尽线程栈空间,异常信息如下

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yyuggjggg/article/details/128308991

智能推荐

Linux 驱动开发基础知识——编写LED驱动程序(三)_linux驱动怎么写-程序员宅基地

文章浏览阅读6.2k次,点赞43次,收藏29次。我们基于 Hello 驱动程序先写出最简单的 LED 驱动程序_linux驱动怎么写

RabbitMQ学习文档(环境安装篇)-程序员宅基地

文章浏览阅读270次。RabbitMQ学习文档_mq学习文档

希捷7200.11固件门完全DIY修正方法! 不用几块钱, DIYers请进!!!_希捷stcomtool转t失败-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏9次。分享给有需要的朋友, 数据无价... 以后注意备份重要资料... 1. 老外的方法[By Gradius]: The Solution for Seagate 7200.11 HDDs (final and revised version): http://www.msfn.org/board/index.php?showtopic=128807&hl=7200.112. (第_希捷stcomtool转t失败

数据库安全:Hadoop 未授权访问-命令执行漏洞._hadoop未授权访问-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏4次。Hadoop 未授权访问主要因HadoopYARN资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过RESTAPI部署任务来执行任意指令,最终完全控制服务器。_hadoop未授权访问

100个替代昂贵商业软件的开源应用_citadel开源中文版本-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏18次。100个替代昂贵商业软件的开源应用面对大,中,小企业和家庭用户,立竿见影显著降低成本的开源软件。某些商业软件素以昂贵著称。随着云计算的日益普及,很多常用软件包供应商将一次性收费改为月租模式。虽然月租费貌似便宜,但也经不起长时间的累积。100个替代昂贵商业软件的开源应用尽管有许多好理由,但避免或减少使用费,仍然是许多用户看中开源应用软件的主要因素。基于这一点,我们更新了可替代_citadel开源中文版本

竞选计算机协会网络部部长,2019年计算机协会部长竞选演讲稿-程序员宅基地

文章浏览阅读55次。2019年计算机协会部长竞选演讲稿篇一:计算机协会部长竞选演讲稿尊敬的领导,敬爱的老师,亲爱的同学们:大家晚上好!俗话说:马只有驰骋千里,方知其是否为良驹;人只有通过竞争,才能知其是否为栋梁。我是来自xxx班的伍朝海,今晚,我很荣幸能够站在这里参加这次学生会的竞选,职位是xx系的宣传窗口——新闻网络部的负责人。我知道,今晚竞选的不仅仅是个职位,也是在竞选一个为同学们服务的机会,更是在竞选一个为我们...

随便推点

stable diffusion(1): webui的本地部署(windows)_sd webui torch版本-程序员宅基地

文章浏览阅读2.1k次。有一个坑一直没过去,就是如果整体环境没完全装好,但是使用我自己提前创建的python虚拟环境来启动SD启动脚本stable-diffusion-webui/webui-user.bat,期间会因为某些原因(比如没梯子东西下载不下来)启动失败,但是第二次启动时就会报没有pip模块的错误,我就只能重新创建python虚拟环境,再装一遍包,这个过程很漫长很浪费时间,所以一定跟着我的脚步,一步不要落下的走,心急吃不了热豆腐。如果没有梯子,这里很慢或者根本过不去,所以参考。三、修改url地址(梯子强可不改)_sd webui torch版本

CTFSHOW做题记录_ctfshow 龙猫-程序员宅基地

文章浏览阅读491次。CTFSHOW做题记录**CTFSHOW做题记录1**(菜菜的我要写日记啦,欢迎大佬指导)**密码学签到1给出“}wohs.ftc{galf”并且提示倒叙。**解题思路:没看提示的时候乍一看以为是栅栏密码,还想着用在线解密去做,但是定睛一看不对劲,再看题目原来就是倒叙。只需要反着来就好啦。**答案:flag{ctf.show}**今天也是元气满满的一天,好好学习。..._ctfshow 龙猫

抓取动态网页的数据的具体操作方法_动态加载的网页怎么获取链接-程序员宅基地

文章浏览阅读1.9k次。不同的方法适用于不同的情况,例如如果目标网站使用的是JavaScript动态加载数据,那么使用Scrapy-Splash可能会更加适合。如果目标网站的数据比较简单,那么使用浏览器开发者工具可能会更加方便。如果需要模拟用户的操作,那么使用Selenium可能是更好的选择。总之,需要根据具体情况选择合适的方法,才能高效地获取动态网页的数据。综上所述,选择合适的方法取决于具体的需求。如果需要模拟用户的操作,可以使用Selenium。动态网页是指在用户交互过程中,网页内容不断更新和变化的网页。_动态加载的网页怎么获取链接

Ubuntu20.04安装向日葵_ubuntu20.04 安装向日库-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏6次。下载最新版本:https://sunlogin.oray.com/download/缺少部分依赖,手动下载:# 你知道最新的版本号了sudo wget http://download.oray.com/sunlogin/linux/SunloginClient-10.0.2.24779_amd64.debsudo wget http://mirrors.aliyun.com/ubuntu/pool/main/i/icu/libicu60_60.2-3ubuntu3_amd64.debsudo w_ubuntu20.04 安装向日库

JMeter之脚本录制_jmeter脚本录制,大厂软件测试高级多套面试专题整理集合-程序员宅基地

文章浏览阅读635次,点赞14次,收藏7次。打开IE浏览器,点击右上方工具按钮,依次选择“Internet选项” -> “连接” -> “局域网设置” -> “代理服务器”,勾选“为LAN使用代理服务器”,输入本地IP地址127.0.0.1及端口号8888,点击确定保存。若页面提示“此网站的安全证书存在问题”,点击“继续浏览此网站(不推荐) ”即可。4.选择“Requests Filtering”,在“包含模式”中填入“.+(baidu.com).+”用以过滤非。选中“工作台”,右键选择“添加” -> “非测试元件” -> “HTTP代理服务器”

20231114歌谣v3--学习篇-组件注册-props-程序员宅基地

文章浏览阅读326次,点赞8次,收藏10次。前端

推荐文章

热门文章

相关标签