释放Javascript对象使用的内存

释放Javascript对象使用的内存,javascript,arrays,garbage-collection,Javascript,Arrays,Garbage Collection,我应该自己释放分配的内存,还是有一种垃圾收集器 在JavaScript中使用以下代码可以吗 function fillArray() { var c = new Array; c.push(3); c.push(2); return c; } var arr = fillArray(); var d = arr.pop() 感谢引自以下网站的: 使用delete语句。每当你 使用新对象创建对象 语句,将其与delete配对 陈述这确保了所有 与对象关联的内存, 包括其属性名称

我应该自己释放分配的内存,还是有一种垃圾收集器

在JavaScript中使用以下代码可以吗

function fillArray()
{
  var c = new Array;
  c.push(3);
  c.push(2);
  return c;
}

var arr = fillArray();
var d = arr.pop()
感谢引自以下网站的

使用delete语句。每当你 使用新对象创建对象 语句,将其与delete配对 陈述这确保了所有 与对象关联的内存, 包括其属性名称,是 可用于垃圾收集。这个 delete语句将在中详细讨论 “释放对象。”


这将建议您使用
delete
命令,然后在使用完
Array
后,允许垃圾收集器释放为其分配的内存。
delete
语句只删除引用这一点值得注意,因为它不同于C/C++中的行为,在没有垃圾收集和删除的情况下,立即释放内存。

变量
arr
d
将作为全局变量存在,直到垃圾收集器收集它们为止

变量将设置为全局对象的属性,即浏览器环境中的
窗口
,但由于变量是用
var
声明的


在您的特定情况下,最好的做法可能是在使用完变量后将其赋值为
null
。您可能还想考虑将其范围包含到函数中,并在该函数中完成它们需要做的事情。

内存管理在JavaScript中是自动的,并且有一个垃圾收集器(GC)。

您不能显式删除变量
d
arr
,但您可以通过将变量设置为其他变量(如
null
)来删除对其值的引用,以允许GC将其从内存中删除

arr = null;
d = null;

请注意,
delete
关键字仅删除对象属性。

在本例中,您想做什么?请记住,“delete”操作符实际上并没有“删除”对象,它只是删除对该对象的引用,以便JavaScript的垃圾收集器可以轻松地看到该对象不再被使用。有关详细信息,请参见以下问题:
delete
运算符从对象中删除属性,因此不处理变量。这是错误的。变量
arr
d
不是对象的属性,它们是变量,因此不能使用
delete
关键字“删除”。我建议把它们分配到别的地方<代码>arr=null;d=零@AlexJM可能掉进了这个陷阱-。很高兴更新答案,感谢您的指点!