栈溢出:Infinite recursion (StackOverflowError)
今天程序中突然出现一个bug,报告的是栈溢出的错Infinite recursion (StackOverflowError),问题如下截图:
经排查是整改json将对象转为字符串时出现的,报错的原因是无限递归所导致的栈溢出,但是梳理后程序中也没有其他贴子写的,对象包含对象本身的list,或者对象包含对象本身。因为错误是在工具类中捕获,于是,我们使用注解@SneakyThrows放开了工具类中的异常,报错又改为以下内容。
com.fasterxml.jackson.databind.JsonMappingException: getOutputStream() has already been called for this response (through reference chain: org.apache.catalina.connector.ResponseFacade[1]->org.apache.catalina.connector.ResponseFacade["writer"])at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:397)at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:356)at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:763)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:252)at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:213)at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:22)at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4407)at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3661)
最终,锁定为日志输出的一行代码:
log.info("result{}",jsonUtil.toJson(result))
最后我们发现,是因为结果中包含了返回给前端的重定向属性,response,如下:
response.sendRedirect(url);
点开response后发现,response里面是自己包含自己的。自此,问题排查出来。
最后总结:
根本原因还是无限递归,
首先,检查自己的类,是否自己包含自己还被转为字符串;
其次,debug检查存放有request和response的对象是否被转字符串使用。
栈溢出:Infinite recursion (StackOverflowError)相关推荐
- Could not write JSON: Infinite recursion (StackOverflowError);
转自:https://blog.csdn.net/east123321/article/details/80435051 在controller返回数据到统一json转换的时候,出现了json inf ...
- JPA HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError
一.异常信息 正常查询数据没有问题,但是在以json形式返回到前端会出现此异常 WARN 22788 --- [nio-8081-exec-2] .w.s.m.s.DefaultHandlerExc ...
- Could not write JSON: Infinite recursion (StackOverflowError) (through reference chain:
环境:springmvc+hibernate 返回json格式的数据 在controller返回数据到统一json转换的时候,出现了json infinite recursion stackoverf ...
- JsonMappingException Infinite recursion StackOverflowError
报错信息 java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: Infinite recur ...
- 返回JSON出现Infinite recursion无限循环错误的解决
在数据库返回树形结构数据之后,想转换成JSON返回页面时出错: org.springframework.http.converter.HttpMessageNotWritableException: ...
- SpringBoot之解决一对一、多对一、多对多等关联实体在JSON序列化/输出时产生的无限递归死循环问题(infinite recursion)
SpringBoot之解决一对一.多对一.多对多等关联实体在JSON序列化/输出时产生的无限递归死循环问题(infinite recursion) 参考文章: (1)SpringBoot之解决一对一. ...
- 关于Infinite recursion detected
在我之前的一篇博文中<基于struts2 拦截器ResultType为chain的Action之间数据传递 --表单页面打开优化>提到使用chain类型的action之间传递数据用以优化表 ...
- 【错误记录】Groovy 函数拦截调用 invokeMethod 导致栈溢出 ( java.lang.StackOverflowError )
文章目录 一.报错信息 二.解决方案 一.报错信息 使用 Groovy 函数拦截功能 , 定义 Groovy 类 , 实现 GroovyInterceptable 接口 , 并重写 invokeMet ...
- JPA 中使用 @OneToMany 、@ManyToOne 等关系映射注解
JPA 做 ORM(Object Relational Mapping,对象关系映射)时,为了开发效率,通常会在实体类上用 hibernate 的关系关联注解. 包括:@OneToOne. @OneT ...
最新文章
- php模拟post上传图片,php模拟post上传图片解决方法
- libopencv_core.so: file not recognized: File format not recognized
- wifi定位算法 java_记一次APP的so层算法逆向(七)
- codefirst 兼容oracle,EF6+MVC5之Oracleo数据库的CodeFirst方式实现
- SAP Spartacus buildCmsStructure 构建逻辑
- VS2010自定义新建文件模版
- Nginx网站用户认证
- C语言运算符的优先级及结合性
- LeetCode 164. 最大间距
- PHP curl 直接获取请求变量,不直接输出
- 白话容器namespace
- 手机HiFi嗨不嗨 看完这些才能算是入坑
- java 文件上传(使用多线程)
- mysql localhost无法连接
- 计161--Problem H: 求三角形面积-gyy
- 这样的也可以发.....
- 北邮智能车仿真培训(七)—— 使用c++编写程序
- html语言中kbd的含义,HTML kbd键盘元素
- PCB布局布线技巧总结
- 文科背景去德国学计算机,文科生留学德国的现状是怎样的
热门文章
- 如何使用Lumberyard制作特效[【1】——Overview
- 随身理财专家“挖财”推iPad应用,新增帐号对比功能
- pycharm运行报错:Process finished with exit code -1073741515 (0xC0000135)
- 内容为王时代的 “内容策略师”职位描述、角色和职责
- html表格自动变色,如何设置实现Excel单元格自动变色?动图演示更详细
- 国家气象局免费天气预报接口,城市代码(JSON格式)
- xwiki功能-皮肤
- V4L2视频驱动框架---meida_device管理模块简述
- 计算机关机重启命令,怎么使用dos命令重启电脑?用dos命令重启电脑关机的方法...
- dialog弹框通过自定义指令实现可拖拽位移功能