Java代码如下:Hashmap.remove()被调用后立即发生垃圾回收吗?
Random r = new Random(1234697890);
HashMap<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<100000;i++){
for(int j=0;j<1000;j++){
list.add(r.nextInt(100000));
}
map.put(i, list);
map.remove(i);
}
时i
达到37553,java.lang.OutOfMemoryError: Java heap space
发生。
似乎垃圾收集不会发生在循环中。
现在我想知道如何解决这个问题。
你总是添加到列表中,并永远不会从中删除。 –
仅供参考,番石榴有一个'Multimap'套类来实现'Map>'并且负责为你创建列表。 –
@JohnB - 这个问题怎么可能相关? – Perception