日期:2014-05-20  浏览次数:20834 次

下面的代码会不会产生内存溢出
Map map=new LinkedHashMap();//linkedHashMap按set进去先后顺序排序的
while(iter.hasNext()){
Quest quest = iter.next();
List<QuestOption> list = trainPlanService.findQuestOption(quest);
map.put(quest, list);
}

return map;

//按照网上的说法,list变量没有被map持有,不会被释放
建议改成 :map.put(quest,trainPlanService.findQuestOption(quest)) ??

------解决方案--------------------
试试WeakHashMap?
------解决方案--------------------
局部变量的作用域在{}里
除了{}这个范围后,GC会自动回收的
所以不用管它
------解决方案--------------------
应该是会释放的,你看的那个帖子说不能被释放啊
------解决方案--------------------
(1)只要map不释放,map里面存的东西当然你也就没法释放,除非是map自己把里面的元素remove掉
(2)建议改成 :map.put(quest,trainPlanService.findQuestOption(quest)) ??
改不改是同样的效果。