【发布时间】:2014-05-30 10:42:38
【问题描述】:
我正在使用大型 ArrayList 在 Java 中进行递归。在一个递归步骤中,我将此列表拆分为两个列表,每个列表大小为一半,并将相同的方法递归地应用于两个列表。但是,由于拆分后不再需要大列表,因此我想将其从内存中删除。在这里搜索了一段时间后,我想出了这个:
public some_object recursiveMethod(ArrayList large_List) {
//Compute the two sublists
ArrayList lower_half = lowerHalf(large_List);
ArrayList upper_half = upperHalf(large_List);
//Delete large list from memory
large_List = null;
//Recursively call on smaller lists
return procedure(recursiveMethod(lower_half),recursiveMethod(upper_half));
}
这会起作用吗,即 GC 会删除大列表吗?
【问题讨论】:
-
如果还有其他对您的 large_list 的引用,这可能还不够。
标签: java memory memory-management recursion