javascript 中怎么删除堆内存中的对象

托泥羊 2015-05-07 05:09:57

比如data是一个很大的对象,现在需要删除/清空它

temp = data; //按照我的理解是data数据存在堆内存中的“引用数据”,temp是data的地址存在栈中,实际上temp和data是指向同一个堆数据。
data=null; //这种情况下,只是改变了data地址的值,data堆数据并没有改变

console.log("..............................");
console.log(data);
console.log(temp);

打印结果:
null
对象的具体数据,省略

请问怎么删除data堆内存中的数据,delete好像也不行
...全文
493 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
la_啦 2015-05-08
  • 打赏
  • 举报
回复
把指向data对象的引用解除,js中的垃圾回收机制会自动回收内存的。 http://bbs.csdn.net/forums/JavaScript
天际的海浪 2015-05-08
  • 打赏
  • 举报
回复
js中的内存回收是自动处理的,我们只需要让外界对这个对象的引用次数为0就可以了,也就是说当外界怎么也访问不了这个对象时,对象就会被回收 至于内存泄漏的问题,现在的新版本浏览器都解决了,我们不需要考虑
未知数 2015-05-08
  • 打赏
  • 举报
回复
生存期后,会自动释放内存,注意避免内存泄漏就行了 如果要主动释放,赋值为null即可,也没太大必要挨个delete属性,当然如果对象有多个生存的引用,给一个赋值为null并不能释放,如果没办法消除所有引用,那挨个delete属性也是个方法
forwardNow 2015-05-08
  • 打赏
  • 举报
回复
递归 data,挨个删除属性值为对象的属性


    
function free ( o ) {
    for ( var p in o ) {
        if ( typeof o[ p ] === "object" ) {
            free ( o[ p ] ) ;
        } 
        delete o[ p ];
        //console.info( p, o[ p ] );
    }
    delete o;
}

var o = {

    "a": 1,

    "b": {
        "c": 2,
        "d": {
            "e": 3
        }
    }
}

free( o );


87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧