系统相关
首页 > 系统相关> > javascript删除对象以防止内存泄漏

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