垃圾收集函数中的对象数组
Garbage Collecting array of objects in a function
假设我有以下功能:
function myfunc() {
var data = [];
for (var i=0; i<10; i++) {
data[i] = {foo:"bar"};
}
// do something with data
}
在函数结束时我不再需要任何数据。释放它需要什么?
据我所知,如果无法从全局对象访问某些内容,则会被 GC 处理。如果 data
不可访问,那么其中的所有元素也将不可访问,因为 data
是对它们的唯一引用。那么使 data
及其中的所有内容成为 GCable 的正确方法是什么?
如果我把它放在函数的末尾,data = null
会成功吗?
我什至需要做点什么吗?由于data
是myfunc()
中的一个局部变量,它不应该在函数完成后被销毁,从而使data
中的数据成为GCable吗?
是的,您不需要做任何事情。
如果没有其他引用刚刚超出范围的对象,它们将被垃圾回收。
这些其他引用可能来自意想不到的地方(例如函数调用后意外关闭,或将内容附加到浏览器 DOM),但总的来说该机制非常可靠。它还负责参考循环。
假设我有以下功能:
function myfunc() {
var data = [];
for (var i=0; i<10; i++) {
data[i] = {foo:"bar"};
}
// do something with data
}
在函数结束时我不再需要任何数据。释放它需要什么?
据我所知,如果无法从全局对象访问某些内容,则会被 GC 处理。如果 data
不可访问,那么其中的所有元素也将不可访问,因为 data
是对它们的唯一引用。那么使 data
及其中的所有内容成为 GCable 的正确方法是什么?
如果我把它放在函数的末尾,data = null
会成功吗?
我什至需要做点什么吗?由于data
是myfunc()
中的一个局部变量,它不应该在函数完成后被销毁,从而使data
中的数据成为GCable吗?
是的,您不需要做任何事情。
如果没有其他引用刚刚超出范围的对象,它们将被垃圾回收。
这些其他引用可能来自意想不到的地方(例如函数调用后意外关闭,或将内容附加到浏览器 DOM),但总的来说该机制非常可靠。它还负责参考循环。