let x = new MyClass();
...[more code]
let x = new MyClass();
MyClass 的第一个实例会被自动回收吗?或者我是否需要在第二次赋值之前显式地 x = null
或类似的东西,以避免内存泄漏?
最佳答案
JavScript 的内存是自动管理的,因此被视为“无法访问”的对象由 garbage collector 收集。 .
在您提供的示例中,存储在 x
中的对象将被垃圾回收,只要它无法从代码的其他部分访问(即,如果您将它放在全局范围内...[more code]
行,该对象将不会被收集,因为它仍然可以访问)。
大多数时候,您不必担心 JavaScript 中的显式内存管理,但是了解重要的常见情况很重要(请参阅 4 common leaks)。
作为一个实际示例,在大多数前端框架/库中,销毁由您的应用程序的短期组件创建的 setInterval
非常重要(即销毁倒计时时钟的间隔已从 DOM 中删除),因为这些间隔中的闭包可能会阻止收集对象。
关于javascript 新关键字和内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48507237/