感觉dom大神的解惑

关于引用计数法,注意引用的方向性就行。  A.addEventListner(B.func), 那么是增加了A对B的引用。如果A是不可回收的对象,比如全局的Stage,或者单例。那不移除就一定会导致B无法回收。如果A是可以回收的对象,那无所谓,这个引用无效。

A.addEventListner(B.func) ,对A本身没有影响。是A引用别人了,不是别人引用A。还是那句话,注意方向性。

A.addChild(B)也是同理。

倒霉的都是B


引用计数实际回收中其着重的情况很小,大部分是根节点遍历法起作用。主要就是看引用的方向性,一个对象反向追溯对它的所有引用,无法到达一个根节点就判定这个对象可以回收。根节点通常有stage,或者其他单例。也指一切确定无法回收的对象。

就是一个对象从任何方式你都再也无法访问到它,它就能被回收。

说的不是标记清除啊。v8的回收机制跟这个根节点遍历法是一个原理。拷贝整块内存到新的地方。

访问不到的全都扔掉了。

就是从几个根节点开始遍历。被根引用的全都无法回收,进入新内存区。旧区域整个删除。根本不考虑循环引用还是什么情况,只要从根无法到达就扔掉。
大部分语言的垃圾回收器都实现了这两种机制:引用计数和根节点遍历,实际项目里的对象循环引用非常多,所以引用计数这种设计实际上一直都没怎么派上用场。大部分是根节点遍历法。V8更激进点,按照它的官方文档描述的话,就只有根节点遍历法。


最新文章

  1. iOS开发----优秀文章推荐
  2. 图解Android触摸事件分发
  3. Roman to Integer [LeetCode]
  4. OpenJudge计算概论-比饭量【枚举法、信息数字化】
  5. pg 匹配中文字符
  6. freeCodeCamp:Diff Two Arrays
  7. C# MySql分页存储过程的应用
  8. 利用redis分布式锁的功能来实现定时器的分布式
  9. 如何向Android模拟器打电话发短信
  10. chmod chgrp chown
  11. SecureCRT上使用公钥登陆Linux服务器
  12. CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划)
  13. python学习===复制list
  14. vue监听scroll使用报错的解决办法
  15. C++的静态联编和动态联编
  16. QString 编码转换
  17. 04 Effective Go 高效的go语言 重点内容
  18. 前端学习笔记之HTML DOM操作
  19. 一步一步解析H.264码流的NALU(SPS,PSS,IDR)获取宽高和帧率
  20. iphone开发笔记

热门文章

  1. 使用jmeter进行APP接口测试经验总结
  2. mac os x在PC上安装
  3. C++/C语言程序代码
  4. C语言——选择排序
  5. 前端总结·基础篇·CSS(二)视觉
  6. c++ 调用dl里的导出类
  7. RHEL 6.0 FTP服务器配置菜鸟配置过程记录
  8. 小白能学好UI设计吗
  9. 关于使用微信js上传图片 笔记
  10. JNI之C初探