javascript - 关于垃圾回收的 Null 和 delete()

标签 javascript ajax null garbage-collection

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

var h = 5;  
delete h; 

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

var h = 5;  
h = null;

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

var h = 5;  
h = null;  
delete h; 

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

最佳答案

没有销毁。您可能正在考虑delete,但是delete不能用于删除变量,只能用于删除属性。 (尽管目前的浏览器允许您摆脱它,但结果各不相同。)您可以通过从 window 中删除全局变量来删除它们,但不能删除本地变量。

无论如何,你不需要在 JavaScript 中考虑这类事情。将变量设置为 null,如果没有更多变量指向同一对象,它将在不久的将来的某个时刻被垃圾收集。指向 null 的变量的记录占用的空间很小,不值得担心。除非您有意关闭,否则当本地函数退出时,它就会超出范围,从而有资格进行 GC。

I had read that you could hint the collector to free memory if it was occupied by null...

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

关于javascript - 关于垃圾回收的 Null 和 delete(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4101472/

相关文章:

javascript - 如何在浏览器中复制 Node 的 Crypto.createHmac( 'sha256' , buffer) ?

lambda - 方案无效?陈述

java - 为什么 Map.of 不允许空键和值?

javascript - 网页是否可以动态插入另一个文件中的数据而不需要服务器调用

javascript - 如何在悬停空 div 时更改不同的 div 背景图像?

javascript - 仅将事件应用于指向的元素而不是其子元素

用于动态加载 SWF 的 Javascript

javascript - 处理 Origin http ://localhost is not allowed by Access-Control-Allow-Origin Without CORS header

javascript - 在 asp.net 按钮上使用 JQUERY 从 ajax 模态扩展器单击重定向到 asp.net 页面

mysql - 在 MySQL 中,您能否仅使用一次比较来检查字段是否为 NULL 或空?