javascript删除对象以防止内存泄漏
作者:互联网
这是我的代码,不知道是否对防止内存泄漏有好处?帮助以及如何测试内存泄漏?
var Test = function () {
this.ar = [];
this.List = function () {
return this.ar;
}
this.Add = function (str) {
this.ar.push(str);
}
}
采用:
var t = new Test();
t.Add("One");
t.Add("Two");
t.Add("Three");
alert(JSON.stringify(t.List()));
t = undefined;
alert(JSON.stringify(t.List() ));
解决方法:
将t设置为undefined将清除对该对象的引用.如果您的代码中没有对该对象的其他引用,则垃圾回收器实际上将释放该Test()对象.这就是javascript中的工作方式.您无需删除对象,只需清除对其的所有引用即可.当所有引用都消失时,该对象可用于垃圾回收.
javascript中实际的delete关键字仅用于从对象中删除属性,如delete t.list中一样.
不同的浏览器有不同的工具可用于跟踪内存使用情况.我知道的用于测试的最通用的黑盒方式是反复运行一个循环,在该循环中,您使用某种setTimeout将非常大的对象(我经常使用大字符串)分配给测试(以消耗大量内存) ()在一定数量的运行之间(让垃圾收集器有一些循环),然后只需查看浏览器的整体内存使用情况即可.只要随着执行越来越多的运行而使整体内存使用率没有增加,那么您就不会有明显的泄漏.
各个浏览器可能具有更全面的测量工具. Chrome浏览器的信息here.
标签:memory-leaks,javascript,object 来源: https://codeday.me/bug/20191122/2060080.html