Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
Garbage Collection Scope in Node.js - How long will variable stay set?
问题是,如果在X段时间内未被更改,由另一个传递或动态变量设置的变量会被重置吗?
我查看了ECMAScript规范,对于垃圾收集的内容和时间,我仍然有点困惑。我查看了JavaScript变量的生存期,它的答案是
"如果一个标识符是可访问的(通过直接指针或闭包),那么它不应该是垃圾回收的。"
那么我做对了吗?
基本上,如果变量由另一个传递的值设置,就会发生垃圾回收。
在三元运算符中呢?
我在两个不同的函数之间交替,每月使用ternary operator
作为switch
运行3。它会知道它在3个月前执行了condition 1
并执行了condition 2
吗?还是我有垃圾收集的风险,它每次都会运行condition 1
?
变量值在时或之后被垃圾收集,因为不再有对变量的引用。
回想一下Javascript中的数组和对象是通过引用传递的,所以如果
var a={}, b=a;
a
指向的对象有两个引用:a
和b
。
a=null;
导致对象只有一个引用b
,因此它不是垃圾回收的候选对象。
b=null;
现在该对象没有引用,因此它成为集合的候选对象。
就闭包而言,这同样适用于:
b=function(){
var a={};
return a;
};
其中b
是对a
曾经引用过的"封闭"对象的引用。
一旦函数完成,a
就超出了作用域,不再是对对象的引用。
当b
在作用域中时,在之前不会对对象进行垃圾收集
b=null;
这将释放对象以进行收集。
当无引用值被垃圾回收时,这取决于JavaScript引擎,通常超出您的直接控制范围。
有一些方法可以触发显式集合,但在大多数情况下很少需要。
相关文章:
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- Javascript使用变量设置属性
- 敲除js变量设置类似于调用函数
- 使用输入变量设置元素的值
- 为什么我们将控制器变量设置为等于“0”;这个“;在角度上
- 将外部控制器的范围变量设置为角度
- 谷歌地图标记在通过变量设置标记和经度时不保持不变
- 尝试在 jquery ajax 帖子中将变量设置为URL 的一部分
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 如何将宽度和高度变量设置为浏览器窗口的宽度和高度
- 如何将变量设置为外部内容
- 需要将变量设置为特定的数字范围
- 执行批处理文件的Javascript,该文件包含基于每个会话的环境变量设置
- 如何在jquery中基于变量设置某个东西的宽度
- 将变量设置为等于本地JSON文件
- 根据Angular中的单独变量设置下拉默认值
- 如何使用JavaScript变量设置函数集css宽度
- 如何为一个javascript变量设置give多个值
- 如何将javascript变量设置为php变量并将其存储在数据库中
- 如何在javascript中为变量设置一行setter