也许这是一个愚蠢的问题,但我不确定垃圾收集过程。
考虑以下代码:
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变量。
答案 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));
}