Javascript中的内存管理

我的github地址

JavaScript中基础的回收机制是引用计数的方式,也是其他很多语言或者游戏引擎中使用的一种基础的垃圾回收机制,(比如cocos2dx中基础类型object就是使用引用计数的方式,每一帧开始时候会把上一帧的所有东西遍历,如果有引用计数为0的,就直接销毁了,在当前帧的时候,如果手动进行释放(如delete),reference变成0了,就直接销毁对象。)(比如egret中也是使用的引用计数的方式)

而引用计数的方式不可避免的就是互相引用的问题。既一个东西引用了另一个东西,而它又引用了第一个,两个的引用计数都增加了,导致引用计数互相持有一个,无法释放,典型的就是js中的闭包(许多网上提到的,其实所有互相引用的道理都一样,比如对象中的成员变量引用一个东西,但是那个东西没被释放一样)。

function test() { 

    let param1 = new Obj() ; 

    param1.OnTouch = function () {

       let shit = param1.shit;

       return shit ;

    }

}
function test() {

    let param1 = new Obj() ;

    let p1 = param1.shit;

    param1.OnTouch = function () {

       let shit = 1;

       return shit ;

    }
}

之后再进行验证和整理

参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management
https://segmentfault.com/a/1190000002778015

这里有一篇别人写的关于javaGC的
http://geek.csdn.net/news/detail/193654

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值