你知道什么可能导致JavaScript中的内存泄漏吗? 我对浏览器感兴趣:IE 7,FireFox 3,Safari 3你知道什么可能导致JavaScript中的内存泄漏吗?
回答
有一篇关于JavaScript and memory leaks的文章。它没有关于浏览器的具体内容,而是描述了内存泄漏和JavaScript的整个问题。
我认为这是一个更好的方法是为浏览器的非特异性:优化的几个浏览器,开发时可能insted的网站为公众。
一般而言;循环引用是许多问题的原因。 我记得IE 6(不知道它是否适用于7)与XMLHTTP泄漏相当严重...设置onreadystatechange = null一旦它完成修复它。
是问题适用于7.而且,由于它不是一个功能,你需要一个void函数功能(你不能赋予null){}已在全局范围中创建和/或将null分配给保存对xmlhttp对象的引用的变量。 – AnthonyWJones 2008-10-04 14:58:58
以下是在IE中的经典存储器泄漏: -
function body_onload()
{
var elem = document.getElementById('someElementId');
// do stuff with elem
elem.onclick = function() {
//Some code that doesn't need the elem variable
}
}
后运行此代码有循环引用,因为一个元素有一个功能分配其引用其又保持一个范围的对象其onclick事件引用元素。
someElement-> onclick->功能scope-> elem-> someElement
在IE中的DOM元素都是基于COM的引用计数对象,所述的Javascript GC不能清理。
添加在上面的代码最终的线将它清理干净的: -
var elem = null;
您可以检查this的Internet Explorer内存泄漏模式MSDN文章。还有一些用于检测内存泄漏一些工具:
你处理2种类的对象(2个垃圾收集),JavaScript和DOM对象,它们可以互相引用(循环引用),即使页面卸载,GC也不能处理所有对象。这里有一个很好的说明:
http://getben.com/archive/2006/05/30/Resolving-JavaScript-Memory-Leaks.aspx
http://www.josh-davis.org/2007/04/11/javascript-built-in-listeners-and-memory-leaks/
- 1. 这可能导致JavaScript内存泄漏?
- 2. Qt/C++ QTcpSocket导致内存泄漏,不知道为什么
- 3. ARC可以导致内存泄漏吗?
- 4. 可能Array.splice导致内存泄漏?
- 5. 为什么glColor3f导致内存泄漏
- 6. 为什么此代码在JavaScript中导致内存泄漏?
- 7. jQuery.data会导致内存泄漏吗?
- 8. 委托会导致内存泄漏吗?
- 9. DynamicResource会导致内存泄漏吗?
- 10. Can Observable.Timer()会导致内存泄漏吗?
- 11. QProcess :: startDetached()会导致内存泄漏吗?
- 12. SiftDescriptorExtractor导致内存泄漏
- 13. vtkWindowToImageFilter导致内存泄漏?
- 14. SKEmitterNode导致内存泄漏
- 15. SmtpClient.Send导致内存泄漏
- 16. pushViewController导致内存泄漏
- 17. CALayer导致内存泄漏?
- 18. SoundPlayer导致内存泄漏?
- 19. glTexImage2D导致内存泄漏
- 20. setTimeout导致内存泄漏
- 21. Dispatcher.beginInvoke导致内存泄漏
- 22. AVAudioPlayer导致内存泄漏
- 23. strdup()导致内存泄漏?
- 24. IntPtr导致内存泄漏?
- 25. NSRunAlertPanel导致内存泄漏
- 26. uipickerview导致内存泄漏
- 27. URL.createObjectURL导致内存泄漏
- 28. net.sourceforge.jtds.jdbc.cache.SimpleLRUCache导致内存泄漏
- 29. AdView导致内存泄漏
- 30. 我在main.m中有内存泄漏,有什么可能导致它?
关于这个问题的优秀文章。+1 – AnthonyWJones 2008-10-04 14:56:18