ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2019-11-22 13:36:11  阅读:208  来源: 互联网

标签:memory-leaks javascript object


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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有