Javascript 垃圾收集器会删除未使用的 key/value 对吗?
Does the Javascript garbage collector delete unused key/value pairs?
我有一个 websocket 系统,其中有一个名为 sessions
的对象,键是会话的名称,值是使用 ws
js 库时的 websocket 数组。我想知道垃圾收集器是否像旧会话一样自动删除未使用的 key/value 对,或者我是否必须使用 delete
关键字手动删除。
没有
垃圾回收将在没有引用时清理值。
引用可以是对象属性或变量。
仅当变量或 属性 被新值覆盖、属性 明确 delete
d 或变量超出范围 (例如函数如果它在内部声明完成而不返回闭包)。
在你的例子中:
sessions
将是对您的对象的引用。它不会消失,因为您始终可以参考您的会话集合。
在该对象内部,指向数组的属性不会消失,因为该对象仍然存在。
如果要删除对象的值之一,则需要明确执行。
我有一个 websocket 系统,其中有一个名为 sessions
的对象,键是会话的名称,值是使用 ws
js 库时的 websocket 数组。我想知道垃圾收集器是否像旧会话一样自动删除未使用的 key/value 对,或者我是否必须使用 delete
关键字手动删除。
没有
垃圾回收将在没有引用时清理值。
引用可以是对象属性或变量。
仅当变量或 属性 被新值覆盖、属性 明确 delete
d 或变量超出范围 (例如函数如果它在内部声明完成而不返回闭包)。
在你的例子中:
sessions
将是对您的对象的引用。它不会消失,因为您始终可以参考您的会话集合。
在该对象内部,指向数组的属性不会消失,因为该对象仍然存在。
如果要删除对象的值之一,则需要明确执行。