javascript使用删除还是依赖垃圾回收?

时间:2012-03-25 22:46:01

标签: javascript memory-leaks garbage-collection javascript-objects performance

这是我的Javascript代码的对象和全局命名空间。

Users.Cache.data = { x:'1', y:'2', z:'3'};

如果我想清除数据中的所有条目,我有两种方法:

1)Users.Cache.data = {}; // Garbage Collection负责从内存中删除它。

2)for(i in Users.Cache.data){ delete(Users.Cache.data[i]; }

如果任何具体方法更好,任何人都可以评论:将这些视为标准: a)内存泄漏(看起来既没有内存泄漏问题) b)表现。

1 个答案:

答案 0 :(得分:4)

实际上,使用delete仍然依赖于垃圾收集;它只会为GC做更多工作。

调用delete x.y不释放任何内存;它只是清除xy的引用 如果y没有其他引用,它将变为无根并且对最终的垃圾收集开放。

您的第二个选项最终将为GC创建更多无根提及的参考文献 (注意我实际上没有测量任何东西)