无论如何,如果我写的是:
var h = 5;
delete h;
......我会删除引用,但不是内存
现在,如果我将变量设置为null
,是否会用空对象替换内存?
var h = 5;
h = null;
如果是这样,不仅仅delete()
引用,而且还用null
对象替换内存不是更好,以获得更好的内存优化?
var h = 5;
h = null;
delete h;
如果我想在一个冗长而复杂的脚本中创建一个桶加载的动态对象,那么摆脱或以其他方式诱导垃圾收集器消除对象的最佳方法是什么?因为除了只是删除引用之外,我还读到如果它被null占用,你可以提示收集器释放内存......
答案 0 :(得分:5)
没有destroy
。您可能正在考虑delete
,但delete
不能用于删除变量,只能用于删除属性。 (虽然目前使用浏览器可以让你获得不同的结果。)你可以通过从window
删除全局变量来删除全局变量,但不能删除本地变量。
无论如何,你不需要在JavaScript中考虑这种东西。将变量设置为null,如果没有更多变量指向同一个对象,它将在不久的将来的某个时刻被垃圾收集。指向null的变量记录占用的空间量很小,不值得担心。除非你正在进行故意关闭,否则当本地函数退出时,它将超出范围,成为GC的资格。
我曾经读过,如果它被null占用,你可以提示收集器释放内存......
不。你只是删除引用,GC将获取现在的孤立对象并自行释放内存。你在这件事上没有任何发言权。
答案 1 :(得分:4)
简单地删除对buckload的所有引用,让垃圾收集变得神奇。