这是我的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)表现。
答案 0 :(得分:4)
实际上,使用delete
仍然依赖于垃圾收集;它只会为GC做更多工作。
调用delete x.y
不释放任何内存;它只是清除x
对y
的引用
如果y
没有其他引用,它将变为无根并且对最终的垃圾收集开放。
您的第二个选项最终将为GC创建更多无根提及的参考文献 (注意我实际上没有测量任何东西)