• (转)as3中的资源管理与GC


    1、as3中不管是普通的object,还是displayobejct都一视同仁

    2、fp9中的gc采用了两种方式进行内存清理
      a、reference count引用计数,顾名思义,根据对象被引用的次数,如果为0,gc清除之
      b、mark sweeping标记扫荡,从root开始往下扫荡,标记所有和root有关联的object,清除没有关联的,方法虽然精确,但是很耗资源,所以fp9只是偶尔来一次扫荡


    3、你永远无法知道gc什么时候会调用,你能做的只是等待,等待gc在某一时刻运行起来。

    4、as3中delete只能用来删除动态属性,不能删除变量,可以将变量置为null来达到删除对象的目的。

    5、将对象置为null,gc是否就会来清除该对象的内存?不一定!!!如果在别处有对它或者它的属性或者它的方法的引用,gc就不会清除该对象!

    6、as3中在addlistener时,可以将weakreference设置为true,这样listener这个函数对象的引用将不计入引用记数, 标记扫荡也不理它(it is not counted in reference counting, and it is not followed for mark sweeping)。Grant Skinner甚至建议永远将该值设定为true!

    强弱引用

     

    registerManager增加一个对CaptchaComponet的引用

    7、as3的System类提供了totolmemory工具来查看当前fp所占有的内存,great!

    8、as3的System类乍一看居然提供了gc方法,强制gc运行,但是仅仅适用于FP debugger version和AIR程序。如果要强制运行gc,可以hack。可以调用两个localconnection,connect两个同名方法,这会产生一 个错误,导致gc强制运行一次标记扫荡!
    try {
      new LocalConnection()onnect('foo');
      new LocalConnection()onnect('foo');
    } catch (e:*) {}
    文章来自: 闪客居(www.flashas.net) 详文参考:http://www.flashas.net/asbc/20090412/4011.html

  • 相关阅读:
    HTML5之标签
    Linux常用命令(二十四)
    Linux常用命令(二十三)
    Python 定位excel表格的最后一个单元格的位置
    tornado学习
    Linux一些基础命令
    用python打造自己的SDK--使用setuptools打包安装
    Centos开放指定端口命令
    python sqlalchemy基本使用
    python rpc
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2518322.html
Copyright © 2020-2023  润新知