java lang string.lang.StackOverflowError 异常怎么解决

百度知道合伙人官方认证企业

1【專注:Python+人工智能|java lang string大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层微信公众号:yuzhitc】

StackOverflowError是由于当前线程的栈满了 ,也就是函数调用层级过多导致

以上是网上查阅的资料。

看懂后我发现我的项目用的servlet技术,讲doGet()方法添加方法this.doPost()得到解决

思考:应该是我在实现分页的时候,在点击上一页下一页时,调用servlet函数后再调回本页面是出现循环。




// 清空文件内的内嫆

// 跳转到用户管理页面

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

百度知道合伙人官方认证企业

1【專注:Python+人工智能|java lang string大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层微信公众号:yuzhitc】

1、查看系统是否有使用大内存的代码或死循环;

2、通过添加JVM配置,来限制使用内存:

线程栈的溢出要么是方法调用层次过多(比如存在无限递归调用),要么是线程栈太小

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜頭里或许有别人想知道的答案。

原因就是在拼sql时方法入栈太深超过了jvm允许的最大深度,也就是递归调用的太深了

解决方法就是不要递归的太深。或者调整JVM参数栈大小默认为1m,可以调整到10m,看看不能解决問题但这样做不推荐。会影响线程数从而影响系统性能。

具体到上面的问题就是一次不要查太多的数据如果in的数量有5000,我们就分开查询一次只查1000查5次。再把结果组合在一起

如果每个业务都单独写的话,就太麻烦了可以写个公共的方法,如下: JPA_QUERY_LIST_MAX_SIZE是一个常量数据值如1000个查一次。这里使用了并行查询查询效率更高。

 

以上代码利用如一个第三方的库:需要引用:

这里引出一个题外话如果in查询数据量佷大的话,可能会导致索引失效的问题需要重点看一下。

我要回帖

更多关于 java.lang 的文章

 

随机推荐