我是靠谱客的博主 爱笑朋友,这篇文章主要介绍java.lang.StackOverflowError: nulljava.lang.StackOverflowError: null迭代的方法:返回值为List时,死循环,出现这种错误 ,现在分享给大家,希望可以做个参考。
java.lang.StackOverflowError: null
复制代码
1
2
3
4
5
6
7
8
9
10
11private 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>时,死循环,出现这种错误
复制代码
1
2
3
4
5
6
7
8
9
10
11private 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
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复