关于垃圾收集的Null和delete()

nav*_*and 0 javascript ajax null garbage-collection

无论如何,如果我写的东西如下:

var h = 5;  
delete h; 
Run Code Online (Sandbox Code Playgroud)

......我将消除参考,但不是记忆.
现在,如果我将变量设置为null,是否会用null对象替换内存?

var h = 5;  
h = null;
Run Code Online (Sandbox Code Playgroud)

如果是这样,不仅更好的是不仅delete()参考,而且还用null对象替换内存,以获得更好的内存优化?

var h = 5;  
h = null;  
delete h; 
Run Code Online (Sandbox Code Playgroud)

如果我想在一个冗长而复杂的脚本中创建一个桶加载的动态对象,那么摆脱或以其他方式诱导垃圾收集器消除对象的最佳方法是什么?因为除了仅仅消除引用之外,我还读到如果它被null占用,你可以提示收集器释放内存...

bob*_*nce 6

没有destroy.您可能正在考虑delete,但delete不能用于删除变量,仅用于删除属性.(虽然目前使用浏览器可以让你获得不同的结果.)你可以删除全局变量window,但不能删除本地变量.

无论如何,你不需要在JavaScript中考虑这种东西.将变量设置为null,如果没有更多变量指向同一个对象,它将在不久的将来的某个时刻被垃圾收集.指向null的变量记录占用的空间量很小,不值得担心.除非你正在进行故意关闭,否则当本地函数退出时,它将超出范围,成为GC的合法范围.

我曾经读过,如果它被null占用,你可以暗示收集器释放内存......

不.你只是删除引用,GC将获取现在的孤立对象并自行释放内存.你在这件事上没有任何发言权.