如何在java中使用hashmap / arraylist null的refrence来释放所有内存

时间:2015-07-30 12:59:13

标签: java core

HashMap.clear()ArrayList.clear()释放内存以缩小大小或大小保持不变?

如何为gc提供arraylist或hashmap引用null

2 个答案:

答案 0 :(得分:6)

如果您clear() MapCollection,则垃圾收集器可以收集其中包含的对象,只要它们未在其他地方引用即可。与删除对MapCollection本身的所有引用(通过将其设置为null无处不在)相同:只要Map是唯一的对象“知道“这些引用,删除对Map本身的所有引用将允许垃圾收集器收集Map,从而也收集其中包含的对象(当然,只要它们没有在其他地方引用,当然)。

但是只是清除Map并不能保证垃圾收集器实际运行 - 它只是可以从内存中清除这些对象,如果它运行的话。但通常你不应该担心这一点。所以你很可能不会注意到调用clear()直接和直接的内存增益,但这只是因为垃圾收集器不会一直运行。

答案 1 :(得分:0)

调用clear将删除集合中的所有元素,如果您没有对集合中的对象的其他引用将使它们有资格进行垃圾收集。

为您的收藏分配null将与上面的内容基本相同,但它也会影响您的收藏。如果没有对该集合的进一步引用,它将变得无法访问并且有资格进行垃圾收集。如果你不保留对该集合中对象的其他引用,它们也可以被垃圾收集。