javascript删除对象以防止内存泄漏

javascript删除对象以防止内存泄漏,javascript,object,memory-leaks,Javascript,Object,Memory Leaks,这是我的代码,我不知道它是否有利于防止内存泄漏?帮助以及如何测试内存泄漏 var Test = function () { this.ar = []; this.List = function () { return this.ar; } this.Add = function (str) { this.ar.push(str); } } 使用: 将t设置为u

这是我的代码,我不知道它是否有利于防止内存泄漏?帮助以及如何测试内存泄漏

var Test = function () {
        this.ar = [];
        this.List = function () {
            return this.ar;
        }
        this.Add = function (str) {
            this.ar.push(str);
        }
    }
使用:


t
设置为
undefined
将清除对对象的引用。如果代码中没有对该对象的其他引用,那么垃圾收集器将确实释放该
Test()
对象。这就是javascript的工作原理。不删除对象,只需清除对该对象的任何引用。当所有引用都消失时,对象可用于垃圾收集

javascript中实际的
delete
关键字仅用于从对象中删除属性,如
delete t.list
中所述

不同的浏览器有不同的工具来跟踪内存使用情况。我所知道的测试中最普遍的黑盒方法是反复运行一个循环,在这个循环中,您将非常大的对象(我经常使用大字符串)分配到您的测试中(以消耗可注意的内存量),在运行一定数量的测试之间使用某种
setTimeout()
(让垃圾收集器有一些循环)然后观察浏览器的整体内存使用情况。只要总体内存使用率不会随着运行次数的增加而不断增加,那么就不能有明显的内存泄漏


个别浏览器可能有更全面的测量工具可用。Chrome的信息。

要测试内存泄漏,请使用随机输入运行它一百万次,并查看进程使用的内存量。它不会上升,你不会有漏洞;如果有,你就有。为什么你认为有内存泄漏?在设置了
t=undefined
之后,为什么要尝试访问
t.List()
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() ));