我是靠谱客的博主 高挑水壶,最近开发中收集的这篇文章主要介绍一次StackOverflowError异常记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原有项目A转换成dubbo后,同样代码,报错如下:

018-02-27 09:57:05 [DubboServerHandler-172.19.18.144:20881-thread-5] ERROR: com.alibaba.dubbo.rpc.filter.ExceptionFilter#invoke  请求ID(cea29a2b7824482f908122492ce441c2):  [DUBBO] Got unchecked and undeclared exception which called by 172.19.18.144. service: com.qqjf.xd.enterprise.ICorpVer2BizService, method: saveCorpInfo, exception: java.lang.StackOverflowError: null, dubbo version: 2.6.0, current host: 127.0.0.1
java.lang.StackOverflowError
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57)
at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.get(UnsafeQualifiedObjectFieldAccessorImpl.java:38)
at java.lang.reflect.Field.get(Field.java:393)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:220)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)
at com.qqjf.common.bean.BeanUtils.beanToMap(BeanUtils.java:221)


StackOverflowError造成该异常本质原因两个:

1.java虚拟机栈:如果线程请求的栈深度大于虚拟机栈所允许的深度;

2.本地方法栈:与java虚拟机栈类似。


网上找了一些方案有两个:1.优化原有代码,将反射变量放入队列,可能是优化的不正确,没有效果;

2.使用beanMap进行对象转换成map,没有报StackOverflowError。原因参考

http://blog.csdn.net/q358543781/article/details/50176953

最后

以上就是高挑水壶为你收集整理的一次StackOverflowError异常记录的全部内容,希望文章能够帮你解决一次StackOverflowError异常记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部