我有一个HashMap,它是学生型的。学生是一个用户定义的对象,它由少数属性和另一个名为College的用户定义对象组成。现在,在使用完之后,我想清除HashMap使用的所有内存,然后清除学生和学院对象使用的所有内存。因此,在进行空化时,是否需要显式地对学生和学院对象进行赋值,然后将空引用赋值给HashMap对象?还是只将NULL赋值给HashMap对象也会释放学生和学院对象所使用的内存?
Map<String, Student> myMap = new HashMap<String, Student>
Student std = myMap.get("");
College col = std.getCollege();
col = null; std = null;
myMap = null;为了释放HashMap正在使用的内存,我需要做以上所有的工作吗?或者取消HashMap将释放所有内存?
发布于 2015-04-26 05:12:19
我只需找出答案就知道了,当我们对任何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;
}您可以在eclipse中使用jadclipse查看HashMap类的这个内容。
https://stackoverflow.com/questions/29407434
复制相似问题