我是靠谱客的博主 爱笑朋友,这篇文章主要介绍java.lang.StackOverflowError: nulljava.lang.StackOverflowError: null迭代的方法:返回值为List时,死循环,出现这种错误,现在分享给大家,希望可以做个参考。

java.lang.StackOverflowError: null

private List<SysRegionEntity> queryValidSysRegionList(String regionId,
List<SysRegionEntity> sysRegionList, List<SysRegionEntity> validSysRegionList) {
for (SysRegionEntity sysRegionEntity : sysRegionList) {
if(null != sysRegionEntity.getpId()){
if(sysRegionEntity.getpId().equals(regionId)){
validSysRegionList.add(sysRegionEntity);
queryValidSysRegionList(sysRegionEntity.getRegionId(), sysRegionList, validSysRegionList);
}
}
}
}

迭代的方法:返回值为List<SysRegionEntity>时,死循环,出现这种错误

private void queryValidSysRegionList(String regionId,
List<SysRegionEntity> sysRegionList, List<SysRegionEntity> validSysRegionList) {
for (SysRegionEntity sysRegionEntity : sysRegionList) {
if(null != sysRegionEntity.getpId()){
if(sysRegionEntity.getpId().equals(regionId)){
validSysRegionList.add(sysRegionEntity);
queryValidSysRegionList(sysRegionEntity.getRegionId(), sysRegionList, validSysRegionList);
}
}
}
}

方案:将返回值变为void即可,或者给返回值。

原因:这主要是迭代本身就是比较占用内存,而每次有返回值占用过多的虚拟机内存,且没有返回值,造成死循环,导致内存溢出。因此将返回值变为void。

最后

以上就是爱笑朋友最近收集整理的关于java.lang.StackOverflowError: nulljava.lang.StackOverflowError: null迭代的方法:返回值为List时,死循环,出现这种错误的全部内容,更多相关java.lang.StackOverflowError:内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部