如何一次性释放/ GC HashMap <string,xyz>(不进行迭代)?</string,xyz>

时间:2013-08-17 23:28:43

标签: java garbage-collection hashmap


我有一些HashMap&lt;字符串,XYZ&gt;创建了一个键类型为String和一些XYZ类的值类型。现在我想要释放/垃圾收集整个HashMap以及它所拥有的XYZ类型的各个对象。是否可以在不重复哈希映射并将每个对象设置为null的情况下执行此操作?我想通过将HashMap设置为null将无法正常工作。以后如何确保对象集合是垃圾回收?

如果我这样做:

XYZ obj = new XYZ();
hm.put("<unique-id>",obj);

XYZ obj2 = new XYZ();
hm.put("<unique-id>",obj2);

.
.
.<more operations>
.
.
hm = null;

我的代码在hm = null语句之后不再引用obj或obj2。


所以我可以肯定jvm也会很快收集obj和obj2吗?


此外,在hashmap是一个庞大的集合的情况下,我不想使用Iterator而不是HashMap来获取并迭代每个对象并将其设置为null。

只有hm = null才能完成GCing整个对象集合的上述内容并为我映射吗?

1 个答案:

答案 0 :(得分:3)

如果不再引用对象,则可以确保该对象已正确收集垃圾。这意味着,如果您将哈希映射设置为null,并且您知道地图中的所有项目都未被其他对象引用,那么它们将被垃圾收集。如果你想手动调用gcc,请记住,决定是否执行gcc进程最终是由JVM做出的!