Dav*_*ein 20 javascript memory
var Obj = function(){}; var X = new Obj();
会X = null妥善清理记忆吗?
这也相同吗?
var Obj = function(){};
var X = {};
X.obj = new Obj();
delete(X.obj);
Run Code Online (Sandbox Code Playgroud)
编辑 看起来虽然删除X.obj不会立即清除内存,但它有助于垃圾收集.如果我不删除X.obj,仍然会有一个指向对象的指针,因此GC可能无法清除它.
虽然我正在接受@ delnan的答案,但如果你正在阅读这篇文章,那么你也应该阅读Benubird的文章.
我也注意到我不小心写了删除(X)而不是删除(X.obj) - 对不起.
小智 18
简短的回答是你没有.delete只是删除一个引用(而不是你尝试使用它的方式,请参阅上面的链接 - 这delete是很少有人真正理解的语言功能之一),仅此而已.实现为您清除了内存,但是当它(并且严格地说 - 这就是为什么人们不应该依赖于提供它们的GC语言中的终结器)时,这不是您的业务.请注意:
从好的方面来说,这意味着你不会得到悬挂的指针错误或(当然,除了上述陷阱)内存泄漏.
Ben*_*ird 15
没有.
读这个:
http://perfectionkills.com/understanding-delete/
| 归档时间: |
|
| 查看次数: |
38148 次 |
| 最近记录: |