我需要自己释放已分配的内存,还是有一种垃圾回收器?
在JavaScript中使用以下代码是否可以?
function fillArray()
{
var c = new Array;
c.push(3);
c.push(2);
return c;
}
var arr = fillArray();
var d = arr.pop()
谢谢
我需要自己释放已分配的内存,还是有一种垃圾回收器?
在JavaScript中使用以下代码是否可以?
function fillArray()
{
var c = new Array;
c.push(3);
c.push(2);
return c;
}
var arr = fillArray();
var d = arr.pop()
谢谢
这意味着当您完成使用数组时,应使用使用删除语句。每当您使用new语句创建一个对象时,请配对使用delete语句。这可以确保与对象相关联的所有内存(包括其属性名称)都可供垃圾回收使用。有关delete语句的更多信息,请参见“释放对象”。
delete
命令以允许垃圾回收器释放为其分配的内存。值得注意的是,delete
语句仅删除引用,这与C / C ++中的行为不同,因为那里没有垃圾回收,delete
会立即释放内存。delete
运算符从对象中删除一个属性,因此不能用于变量。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete - Alex Mundarr = null;
d = null;
delete
关键字仅删除对象属性。arr
和d
将作为全局变量存在,并一直存在,直到被垃圾回收器收集。window
,但由于它们是用var
声明的,它们将无法从全局对象中删除。
在您的特定情况下,最好的做法可能是在完成使用后将变量赋值为null
。您还可以考虑将其范围限制在一个函数内,并在该函数内执行所需操作。arr
和d
不是对象的属性,它们是变量,因此不能使用delete
关键字进行“删除”。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete - Alex Mundarr = null; d = null;
- Alex Mund