我是靠谱客的博主 爱笑朋友,最近开发中收集的这篇文章主要介绍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
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复