JavaScript 内存管理陷阱?

标签 javascript memory-management garbage-collection

我知道 JavaScript 有一个垃圾收集器。因此,使用delete仅删除对该对象的引用,当不再有对该对象的引用时,它就会被GC删除。

JavaScript 很棘手,因为有闭包、模糊的命名空间和原型(prototype)继承,所以并不总是很明显知道什么时候开始或为什么。

我正在编写一个相当大的 JavaScript 项目,希望避免内存泄漏,同时限制全局内存使用。我根本没有处于优化阶段(让我们先让这些东西工作起来:-)),但最好了解内存管理的良好实践,以避免编写蹩脚的代码。

  • 那么我什么时候应该使用删除
  • 我应该避免哪些陷阱, 使用对象?
  • 有关闭包的一些知识?
  • 有哪些值得强调的良好做法?

最佳答案

根据我的经验,垃圾收集器的实现好坏取决于浏览器。应用良好的面向对象编程实践是一个好的开始。

我唯一的建议:不要通过连接 DOM 和 javascript 对象造成内存泄漏(不会被 DOM 和 JS GC 清除的循环引用)。这些错误将消耗比您在应用程序中实例化的任何对象更多的内存。

有关 DOM/JS 内存泄漏的更多详细信息。 http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx

关于JavaScript 内存管理陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519114/

相关文章:

java - 在java中,我们如何从类中的方法中销毁类的实例

go - 从完成 channel 和未关闭 channel 的 GC 生成 context.Context

javascript - 网页打印按钮和设置

C - 冲突类型错误/重新分配

java - 从 Java 6 + Tomcat 6 升级到 Java 8 + Tomcat 8 时垃圾收集器的使用

java - Pushing variables to Stack 和 Variables living in the Stack 的区别?

python - 我如何在python中将相同的列表对象分配给两个不同的变量名?

javascript - 使用 jQuery 选中/取消选中复选框

javascript - jQuery 在单击 anchor 元素时处理 href

javascript - 使用谷歌地图时作为未定义的第一个 child 出现错误