我有一些HashMap < String,XYZ >创建的键类型为String,值类型为某些XYZ Class.Now的一些条件检查,我想释放/垃圾收集整个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;
我的代码不再引用obj或obj2后的hm=null语句。
所以,我能确定jvm不久也会垃圾收集、obj和obj2吗?
此外,在hashmap是一个巨大集合的情况下,我不想使用HashMap之上的Iterator来获取和迭代每个对象,并将其设置为null。
仅仅是hm=null为我完成了GCing的所有对象+映射的集合吗?
发布于 2013-08-17 23:39:15
如果不再引用对象,则可以确保正确地收集了该对象。这意味着,如果您将散列映射设置为null
,并且您知道映射arn中的所有项都没有被其他对象引用,那么它们将被垃圾收集。如果您想要手动调用gcc,请记住,gcc进程是否执行的决定最终是由JVM决定的!
https://stackoverflow.com/questions/18294271
复制相似问题