HashMap和垃圾收集:我需要在变量重新赋值之前调用clear()吗?

时间:2013-06-10 15:52:28

标签: java android collections garbage-collection

也许这是一个愚蠢的问题,但我不确定垃圾收集过程。

考虑以下代码:

private HashMap<String, Parameter> configuration = new HashMap<String, Parameter>();

...
//add some items to configuration
...

//now get another configuration
HashMap<String, Parameter> parameters = new HashMap<String, Parameter>();
for (String parameterName : configurationParameterNameList) {
    parameters.put(parameterName, reader.readParameter(parameterName));
}

//and reassign the variable
this.configuration.clear();
this.configuration = parameters;

在重新分配之前,我是否需要致电configuration.clear()Parameter类只包含几个String变量。

3 个答案:

答案 0 :(得分:10)

不,您不需要致电clear()

只要其他任何内容都没有引用HashMap,只要您将this.configuration更改为其他值,它(及其所有条目)就有资格进行垃圾回收。

答案 1 :(得分:2)

不,java中的垃圾收集是自动的。 这意味着如果一个对象没有对它的引用,它就会被删除。 所以,就像上面的回答所说,只要你从Map中取出所有引用,它就有资格进行垃圾收集。

答案 2 :(得分:2)

没有必要。无论如何,原始的HashMap实例都将丢失。初始化配置也没有意义。

private HashMap<String, Parameter> configuration;   
...
configuration = new HashMap<String, Parameter>();
for (String parameterName : configurationParameterNameList) {
    configuration.put(parameterName, reader.readParameter(parameterName));
}