草庐IT

memory-leaks

全部标签

javascript - Chrome Profiler Javascript 内存泄漏

我试图编写一个存在内存泄漏的javascript代码,以便在Chrome中使用分析器。但是,探查器似乎没有显示它应该显示的内容。这是我的代码:StartDestroyvarLeaker=function(){};Leaker.prototype={init:function(){this._interval=null;this.start();},start:function(){varself=this;this._interval=setInterval(function(){self.onInterval();},100);},onInterval:function(){cons

javascript - 使用递归 promise 阻止内存泄漏

如何使用Qlibrary创建JavaScriptPromise的递归链?以下代码无法在Chrome中完成://Don'tkeeptrackofapromisesstackfordebugging//ReducesmemoryusagewhenrecursingpromisesQ.longStackJumpLimit=0;functiondo_stuff(count){if(count==1000000){return;}if(count%10000==0){console.log(count);}returnQ.delay(1).then(function(){returndo_stu

javascript - 有没有办法在基于 webkit 的浏览器中强制使用 Javascript 垃圾收集器?

在InternetExplorer中,我们可以使用此方法强制执行Javascript垃圾收集:CollectGarbage();该方法在Firefox上未定义。你知道是否有某种等价物吗?谢谢。 最佳答案 (不只是将此答案限制在基于WebKit的浏览器中......)Chrome:如果您使用--js-flags="--expose-gc"从命令行/终端启动它,那么它会提供window.gc().我认为Firefox需要单击about:memory中的“释放内存”按钮。Opera有window.opera.collect()。Edge有

JavaScript:什么是 Expando 属性?

我在阅读有关JavaScript内存泄漏的文章时遇到了这个属性。我被告知此属性仅在InternetExplorer中受支持,并且负责循环引用。我尝试检查并发现此属性在任何浏览器中都不可用。谁能提供有关此属性的任何见解以及它与内存泄漏有何关联? 最佳答案 我带着同样的问题来到这里,也是在阅读了一篇关于内存泄漏的文章之后。阅读此处的答案后,我仍然感到困惑,所以我想在进行更多研究后分享我的发现。在JavaScript中,要知道像.expandoProperty这样的东西是语言的一部分还是有人对属性名称很聪明,这可能会让人感到困惑。内存泄漏

Javascript嵌套函数性能

我有一些嵌套函数,例如varfreak=function(){vardie=function(){...}die(this);}据我所知,每次调用freak时都会创建(分配)die函数。所以如果freak被调用很多时间,这意味着大量内存将被浪费(假设die没有使用freak的上下文;换句话说,即使它只分配一次并在freak的多次调用之间共享,它也能正常工作——这就是我所说的wasted).我的理解对吗?这是否意味着应该完全避免嵌套函数? 最佳答案 AsfarasIhavelearned,thediefunctionwillgetcr

javascript - 浏览器使用 AJAX + setInterval 不断占用内存

我需要用JavaScript在给定的时间间隔内更新大量数据。问题是,无论我使用什么JS库(甚至是最简单的js),所有浏览器似乎都会在每个AJAX请求上分配内存并且之后无法释放它。这是一个应该重现错误的示例:MemleakTestfunctionreadData(){$.getJSON('data.php');}$(document).ready(function(){setInterval(readData,1000);});jsbin提供了等效的测试页这里有更多的信息:我还尝试将readData()函数作为闭包直接放在setInterval()调用中。这似乎没有任何区别。我在这里使用

javascript - AngularJS - 删除绑定(bind)以避免内存泄漏

AngularJS中断开绑定(bind)的正确方法是什么?我有一个非Angular应用程序,它正在加载一个使用angularjs进行数据绑定(bind)的组件。在某些时候我想销毁组件并希望确保没有内存泄漏。我如何告诉Angular从DOM的那部分删除所有事件监听器?$(node).remove()会解决这个问题,还是angular会在内存中做其他需要清理的事情...?任何其他关于避免Angular内存泄漏的提示都将不胜感激。 最佳答案 只是删除一个具有范围的DOM元素,如remove()不会删除内存中的范围。您可以通过删除元素并查看

javascript - Angular 2 + angular-in-memory-web-api 区域 GET http ://localhost:3000/traceur 404 (Not Found)

您好,我对angular-in-memory-web-api有疑问。我尝试在SystemJS中使用angular2-in-memory-web-api和她的另一个解决方案,但没有结果。我正在使用官方快速入门模板。谢谢你的帮助错误列表zone.js:1382GEThttp://localhost:3000/traceur404(NotFound)dashboard:19Error:(SystemJS)XHRerror(404NotFound)loadinghttp://localhost:3000/traceurError:XHRerror(404NotFound)loadinghttp

javascript - Angular Directive(指令)内存泄漏?

我正在使用这个简单的html文件重现我发现的内存泄漏:varapp=angular.module('testApp',[]);app.directive('directive1',function(){return{template:'',scope:true};});app.directive('directive2',function(){functionLeakObject(){}functionFoo(){this.bar=function($scope){$scope.nottheredude;};}return{scope:true,link:function($scope

javascript - JQuery 垃圾收集——这会干净吗?

很多文章(例如msdn)都说当循环引用涉及DOM对象和JS对象时,在某些浏览器中无法清除循环引用。(IE6根本做不到,IE7只能在页面请求之间做):JavascriptNative(漏洞):functionleak(){varelem=document.createElement("DIV");document.body.appendChild(elem);elem.onclick=function(){elem.innerHTML=elem.innerHTML+".";//...};}因为元素的onload属性通过闭包引用回自身,它创建了一个循环引用:elem[DOM]->elem.