[英]JavaScript memory management pitfalls?
我知道 JavaScript 有一个垃圾收集器。 因此,使用delete删除的只是该对象的一个引用,当不再有这个对象的引用时,由GC删除。
JavaScript 很棘手,因为有闭包、模糊的命名空间和原型继承,所以现在知道何时或为什么并不总是很明显。
我正在编写一个相当大的 JavaScript 项目,希望避免内存泄漏,同时限制全局内存使用。 我根本不在优化阶段(让我们先让这些东西工作:-)),但最好了解内存管理的良好实践,以避免编写糟糕的代码。
根据我的经验,根据浏览器的不同,垃圾收集器的实现很好/很差。 应用良好的面向对象编程实践是一个好的开始。
我唯一的建议是:不要通过连接 DOM 和 javascript 对象(不会被 DOM 和 JS GC 清除的循环引用)造成内存泄漏。 这些错误将比您在应用程序中实例化的任何对象消耗更多的内存。
有关 DOM/JS 内存泄漏的更多详细信息。 http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx
我认为通过在 DOM 节点上存储数据,您可以轻松创建并非所有浏览器都可以处理的循环引用。 例如:
this.element = document.getElementById('something');
this.element.attachedObject = this;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.