javascript 新关键字和内存泄漏?

标签 javascript memory-management memory-leaks new-operator

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/

相关文章:

javascript - 在 Javascript 中搜索数组中的子字符串

javascript - 在回调中调用 yield,redux saga 给了我一个异常为什么?

javascript - 将 JavaScript new Date() 转换为 php DateTime()

php - PHP CLI 脚本还可以如何确定其内存限制?

c++ - avcodec_open2 方法中的 ffmpeg 内存泄漏

javascript - 如何让JavaScript输出?

c - 用C写一个内存管理函数?

c++ - 我应该如何将 placement new 与自定义分配 API 一起使用?

.NET - clr.dll 和 native 堆的高内存使用率

objective-c - 将 KVO 观察器添加到 self 会导致内存泄漏吗?