jjzjj

javascript - 循环添加/删除 DOM 节点会导致 JavaScript 内存泄漏?

我正在尝试显示使用DOM元素(添加/删除它们)进行操作的动态可变数据。我发现几乎所有浏览器都有一个非常奇怪的行为:在我删除一个DOM元素然后添加一个新元素后,浏览器没有释放被删除的DOM项目占用的内存。请参阅下面的代码以了解我的意思。在我们运行此页面后,它将逐步占用多达150MB的内存。谁能向我解释这种奇怪的行为?还是我做错了什么?functionredrawThings(){//Removingallthechildrenfromthecontainervarcont=document.getElementById("container");while(cont.childNodes

javascript - 如何查找内存泄漏并调试 jquery/javascript 应用程序?

我正在尝试调试一个用jqueryMobile编写的相当大的应用程序,并且正在努力确定可疑的内存泄漏。我一直在上下运行所有​​功能的应用程序中纵横交错。一直以来,服务器内存使用情况都正常,除了一个页面之外的所有页面都工作正常。在有问题的页面上(小部件繁重的产品搜索和订购页面,使用JQMphotoswipe、multiview以及一堆其他插件)在大多数按钮停止工作之前都可以正常工作一段时间。按钮没有反应告诉我我需要检查我的jquery应用程序管理器,它也处理所有事件绑定(bind)。问题是,大约90k,我真的不知道从哪里开始,所以问题:是否有任何工具可以检查Jquery/Javascrip

javascript - 内存泄漏的单元测试javascript

有没有办法对javascript内存泄漏进行单元测试?我的意思是,有什么方法可以直接从javascript代码访问堆以检查分离的DOM树或增加的内存使用量?我知道您可以通过Chrome开发工具执行此操作,但我想知道是否有一种方法可以直接从我的单元测试中执行此操作,因为编写一些代码、获取堆快照、执行潜在的内存操作似乎很乏味泄漏操作,拍摄另一个堆快照,并为每个可能的内存泄漏操作重复,每次编写另一个代码片段。更不用说在一个地方添加代码可能会导致应用程序另一部分发生意外内存泄漏。只是我写了一个内存泄漏很大的应用程序,我不得不从头开始。这次我开发应用程序时,我想确保我的单元测试可以检测到我刚刚造

javascript - Firefox 插件的内存泄漏

我有一个插件,它很大,我需要了解一些东西......是什么导致Firefox插件内存泄漏?如何找到导致泄漏的原因?如何修复漏洞?插件在页面上添加一些元素,请求页面的某些部分并更新DOM。每次重新加载页面都会增加内存,即使关闭选项卡也不会释放内存。 最佳答案 这是一个Firefoxextension它可以捕获某些类型的内存泄漏。有更多关于调试泄漏的文档here,但它有点难读。 关于javascript-Firefox插件的内存泄漏,我们在StackOverflow上找到一个类似的问题:

javascript - 具有 ID 属性的动态 DOM 对象的 IE9 内存泄漏

我注意到为动态创建的DOM对象分配ID属性值会导致IE9泄漏内存。有没有其他人经历过这种情况,更重要的是,知道任何解决方法?它在其他浏览器中不会泄漏,即使是IE6也能通过!泄露代码演示:它只是连续地从表中添加和删除行,并为每一行分配一个ID以供稍后查找。没有“row.id=eid;”就不会发生泄漏functionaddRow(tbl,index){varrow=tbl.insertRow(index);vareid="loongrowid"+count;row.id=eid;for(vari=0;i';for(vari=1;iTESTINGselecteddatetimeplacede

javascript - 在 Dojo 类中递归调用 setTimeout 时是否存在内存泄漏?

我们已经使用Dojo创建了一个在UI上带有时钟的应用程序。但有时应用程序UI只是卡在那里,时钟就停止了。猜测JS引擎刚刚停止,因为时钟是由javascript代码驱动的。不确定以下代码会导致内存泄漏,然后导致挂起问题。我们使用递归的setTimeout调用来实现时钟。dojo.declare("xxx.xxx.HomepageHeader",[dijit._Widget,dijit._Templated],{widgetsInTemplate:true,_time:'',dateUtil:null,//....//....prefix:function(value,p){return(

javascript - 使用 jQuery/.data() 避免内存泄漏

我正在使用jQuery动态创建HTML元素,现在需要针对它们存储JavaScript数据。但是,我现在担心内存泄漏,因为我实际上从未对我的对象调用“删除”。我'.append'和'.detach'它们,但从不'.remove'。jQuery的文档似乎建议我应该调用remove来清理它在对象上的足迹——事件、数据等。这在现代浏览器上是否绝对必要,或者对元素的任何引用的消失是否会为我做到这一点?表达我的问题的另一种方式;这个脚本片段会泄漏内存吗?functioncreateElement(){varnewDiv=$("").data("test","testdata").appendTo(

用于 mac OSX 的 Chrome 浏览器中 HTML5 Canvas getImageData 的 javascript 内存泄漏

此问题已在新的chrome版本(版本35.0.1916.114)中修复在chromeforma​​cosx中,CanvasRenderingContext2D#getImageData函数会造成内存泄漏,我该如何避免这个问题,这是测试用例和结果,它只是发生了在chrome浏览器中,safari是可以的CanvasRenderingContext2D#getImageDatabuginchromevarg;functioninit(){g=document.getElementById('canvas').getContext('2d');g.fillStyle="blue";g.fil

javascript - 这个 AJAX 模式是内存泄漏吗?

考虑这个AngularJs中非常标准的方法示例,它更新View:$scope.fetchResults=function(){//SomelocalvariablethatwillcausecreationofclosurevarhugeData=serviceX.getMilionRecords();//Anycalltoanyresourcewithsuccessanderrorhandlers.$http({method:"GET",url:"/rest-api/bulk-operation-x",params:{someParam:hugeData.length}}).succ

javascript - knockout 映射插件中的奇怪内存泄漏

在View模型是使用knockout.mapping插件创建的情况下,无法弄清楚为什么处理计算的可观察对象不会从全局变量中删除订阅。首先让我们看看直接创建模型时会发生什么://Globalvariable.varEnvironment={currencyStr:ko.observable("usd.")};//Itemmodel,usedintensively.functionItemModel(price){varself=this;this.price=ko.computed(function(){//Computedissubscribedtoglobalvariable.ret