最近用JS写了一个控件----div模拟弹出窗口.之前发布过一个版本,网友说有很严重的内存泄漏问题,经过此次修改,已经解决了此问题.对于JS的内存泄漏很很奇怪,一直都没有想过有此问题,也许是只会做java吧,很少考虑内存释放的问题.针对此问题,特意在网上找了一些资料.摘录如下.
1.内存泄漏检测工具.http://outofhanwell.com/ieleak/index.php?title=Main_Page
说明文档:https://ieleak.svn.sourceforge.net/svnroot/ieleak/trunk/drip/docs/index.html
2.如何修正JS的内存泄漏,一些教程:http://outofhanwell.com/ieleak/index.php?title=Fixing_Leaks
1) function loadMyPage() {
var elem = document.getElementById('myelement');
elem.onclick = function () {
window.alert('hi!');
};
}
这段代码就能引起JS的内存泄漏,如果修正:elem = null;
或者
function onMyElemClick() {
window.alert('hi!');
}
function loadMyPage() {
var elem = document.getElementById('myelement');
elem.onclick = onMyElemClick;
}
2). function Helper(elem)
{
this.elem = elem;
}
var elem = document.getElementById('elem');
elem.helper = new Helper(elem);
var parent = document.getElementById('parent');
var child = document.getElementById('child');
// make it easy to find one from the other
parent.other = child;
child.other = parent;
以上两段代码都会引起内存泄漏.
3)如果将一个element从一个elemeng删除最好用 innerHTML="". 如下:
function discardElement(element) {
var garbageBin = document.getElementById('IELeakGarbageBin');
if (!garbageBin) {
garbageBin = document.createElement('DIV');
garbageBin.id = 'IELeakGarbageBin';
garbageBin.style.display = 'none';
document.body.appendChild(garbageBin);
}
// move the element to the garbage bin
garbageBin.appendChild(element);
garbageBin.innerHTML = '';
}
分享到:
相关推荐
JS内存泄漏检测工具:IEJSLeaksDetector
### JavaScript内存泄露详解 #### 一、什么是JavaScript内存泄露? 在JavaScript编程中,内存泄露指的是在浏览器中不再使用的变量或对象占用的内存没有被及时回收,导致可用内存逐渐减少的现象。这种现象通常发生...
JavaScript内存泄漏是一个重要的主题,尤其是在开发复杂且性能敏感的Web应用程序时。JavaScript是一种动态类型语言,它在浏览器环境中运行,并依赖于垃圾收集机制来管理内存。然而,由于一些特性及浏览器实现的差异...
JavaScript内存泄露问题的解析 JavaScript内存泄露问题是一种常见的bug,它会导致系统崩溃和性能下降。内存泄露是指系统不能正确地管理内存分配的情况,这可能会导致程序调用失败、执行减慢等问题。 在JavaScript...
JavaScript内存泄漏是一个重要的编程问题,尤其对于Web应用来说,它可能导致性能下降,用户界面响应变慢,甚至在极端情况下导致应用程序崩溃。理解内存泄漏的原因、如何检测和解决它们是每个JavaScript开发者必备的...
### Js内存泄漏及解决方案 #### 一、理解内存泄漏 在JavaScript中,内存泄漏是指由于某种原因导致不再使用的变量或对象仍然占据着内存空间,从而无法被垃圾回收机制(Garbage Collection, GC)释放,这将导致应用...
了解这些常见的JS内存泄露实例后,开发者可以通过代码审查、使用内存分析工具(如Chrome DevTools的Memory面板)以及遵循最佳实践来预防内存泄露。记住,即使JS有自动垃圾回收,也应时刻注意内存管理,确保程序的...
内存泄漏是程序运行过程中,不再使用的内存没有被正确释放,导致系统资源持续占用,从而影响程序性能甚至系统...了解并掌握这些知识点,开发者可以更有效地预防和解决JavaScript内存泄漏问题,确保应用的高效稳定运行。
在探讨JavaScript内存泄漏的处理方式前,有必要了解内存泄漏的含义。内存泄漏通常指的是程序不再使用的内存未能被释放,导致内存消耗不断上升。即使在高级语言如JavaScript中,这一问题亦可能出现,尽管它拥有垃圾...
JavaScript内存泄漏指的是由于代码的某些问题导致内存不能被垃圾回收机制正常回收,从而随着时间的推移,内存消耗持续增长。这不仅会导致程序运行缓慢,最终还可能导致程序崩溃。根据给定文件中的内容,我们可以分析...
sIEve是一款专门针对JavaScript内存泄漏检测的工具,版本为0.0.8。这款工具的主要目标是帮助开发者识别和定位JavaScript应用中的内存泄漏问题,以优化性能并提高用户体验。sIEve通过深入分析JavaScript运行时的内存...
在大厂前端面试中,内存泄漏问题的考察通常是为了测试候选人对于JavaScript底层原理的掌握程度。由于内存泄漏往往会导致应用性能下降甚至崩溃,因此这个问题对于评估一个前端工程师的实际编码能力和问题解决能力至关...
“常见兼容问题.doc”可能汇总了各种类型的CSS兼容和JavaScript内存泄漏问题,为开发者提供了一站式参考。而“div+css浏览器兼容问题解决方法(PDF版).pdf”很可能提供了一种系统性的解决策略,包括了从设计到实现的...
本文将详细探讨JavaScript内存泄漏的原因,并展示一些常见的内存泄漏模式,以及如何解决这些问题。 首先,JavaScript 是一种垃圾收集语言,意味着对象创建时会分配内存,在没有更多引用时由浏览器回收这些内存。...
检测内存泄漏的工具和手段确实有限,仅有的两个工具(JavaScript Memory LeakDetector 和 sIEve )都不太好用,不像 Java 里面的一些工具能精准定位。因此,需要通过经验预测最有可能泄漏的几个点,再通过排除法,...
原因可能包括全局变量未释放、闭包导致的内存泄漏、Buffer对象的不当使用、循环引用以及外部库的内存管理问题等。要定位内存泄露,开发者可以借助应用性能管理(APM)工具,如Alinode,它能够提供实时的内存使用情况...
JavaScript内存泄漏是一个重要的主题,尤其是在现代Web开发中,因为页面长时间保持活跃且动态更新内容的情况越来越普遍。了解和处理内存泄漏对于优化Web应用性能至关重要。本文将深入探讨JavaScript中的几种常见内存...
3. 在 dev-runner.js 中找到了关于杀死进程的方法,使用 process.kill(electronProcess.pid) 杀死进程,以解决内存泄漏问题。 解决思路: 使用 process.kill(electronProcess.pid) 杀死进程,以解决内存泄漏问题。...
【JavaScript源代码】一篇文章弄懂javascript内存泄漏 在JavaScript中,内存管理对于程序性能至关重要,因为内存泄漏会导致程序效率下降,甚至可能导致应用崩溃。本文旨在深入解析JavaScript中的内存泄漏及其解决...