清除集合对象中的引用

时间:2015-04-02 07:33:26

标签: memory collections hashmap

我有一个学生类型的HashMap。 Student是一个用户定义的对象,它由少数属性和另一个名为College的用户定义对象组成。现在,在使用之后我想清除HashMap使用的所有内存,以及学生和学院对象使用的所有内存。因此,在取消时,是否需要显式取消Student和College对象,然后为HashMap对象分配NULL引用?或者只为HashMap对象分配NULL也会释放Student和College对象使用的内存?

Map<String, Student> myMap = new HashMap<String, Student>
Student std = myMap.get("");
College col = std.getCollege();
col = null; std = null;
myMap = null;

我是否需要执行以上所有操作以释放HashMap正在使用的内存?或者取消HashMap将释放所有内存?

1 个答案:

答案 0 :(得分:0)

我只是为此找出答案并且知道,当我们在任何hashmap对象上调用clear方法时,它会在内部迭代hashmap中的所有对象/内容并显式地将其指定为NULL。然后将hashMap的大小设置为0以清除哈希映射。下面是HashMap类的clear()方法的实现。

public void clear() {
    this.modCount += 1;
    Entry[] arrayOfEntry = this.table;
    for (int i = 0; i < arrayOfEntry.length; ++i)
        arrayOfEntry[i] = null;
    this.size = 0;
}

您可以在日食中使用jadclipse插件查看HashMap类的内容。