sli*_*lim 7 java garbage-collection
如果我有:
for (int i; i != 100; i++) {
ArrayList<String> myList = buildList();
//... more work here
}
Run Code Online (Sandbox Code Playgroud)
我是否必须在循环结束时将myList设置为null以使GC回收它用于myList的内存?
Ala*_*nse 11
GC将自动清除不再在范围内的任何变量.
在块内声明的变量(例如for循环)将仅在该块内的范围内.代码退出块后,GC将删除它.一旦循环的迭代结束,就会发生这种情况,因此一旦循环的每次迭代结束,列表就有资格进行垃圾收集.
变量的范围也是i在示例循环之后无效的原因.
请注意,仅在循环内使用变量时才会出现这种情况.如果将它传递给另一个保持对它的引用的方法,则不会对您的变量进行垃圾回收.