【发布时间】:2015-09-11 07:58:33
【问题描述】:
我已经阅读了几篇关于 Java 垃圾收集的文章,但我仍然无法确定明确清除收集是否被认为是一种好习惯......因为我找不到明确的答案,所以我决定在这里问它.
考虑这个例子:
List<String> list = new LinkedList<>();
// here we use the list, perhaps adding hundreds of items in it...
// ...and now the work is done, the list is not needed anymore
list.clear();
list = null;
从我在例如的实现中看到的LinkedList 或 HashSet,clear() 方法基本上只是循环给定集合中的所有项目,将其所有元素(在LinkedList 的情况下还引用下一个和上一个元素)设置为null
如果我做对了,将list 设置为null 只会从list 中删除一个引用——考虑到它是对它的唯一引用,垃圾收集器最终会处理它。我只是不知道在这种情况下,列表的元素也被垃圾收集器处理需要多长时间。
所以我的问题是 - 上面列出的示例代码的最后两行实际上是否有助于垃圾收集器更有效地工作(即更早地收集列表的元素)或者我只是让我的应用程序忙于“不相关的任务” ?
【问题讨论】: