看js高级程序设计里说,几本上所有浏览器收集垃圾使用的都是标记清除的方法,IE里面的BOM,DOM采用的引用计数法。
函数中的原生对象objectA,objectB在函数执行结束后,能不能被释放?
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
展开全部楼主问的这些,其实在javascript高级程序设计一书里已有详细说明了。我觉得需要纠正的是:
1、并不是所有的浏览器使用的都是”引用计数“这种垃圾回收算法,貌似只有IE6/IE7/IE8在用,现代浏览器比如Chrome/Firefox/Opera使用的比较好的”标记清除“算法。
2、并不是引用计数为0了,垃圾回收器就会立马回收,回收是会消耗一些性能,所以浏览器会在浏览器占用内存达到一定数值的时候,才会执行垃圾回收。当然可以通过强制调用方法执行。具体请看高程那边书
3、执行玩problem方法后,objctA、objectB可以被回收,因为它们在函数内相互引用,而没有引用函数外的其他对象,或者函数外没有其他引用它们,所以函数执行完,会被释放的。
- 本文固定链接: http://fenleilaji.cc/?id=6347
- 转载请注明: admin 于 分类垃圾-环境保护从分类垃圾做起! 发表
《本文》有 0 条评论