加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – 弱引用和强引用

发布时间:2020-12-15 02:10:19 所属栏目:百科 来源:网络整理
导读:package uk.co.bigroom.utils { import flash.utils.Dictionary; /** * Class to create a weak reference to an object. A weak reference * is a reference that does not prevent the object from being * garbage collected. If the object has been gar
package uk.co.bigroom.utils 
{
    import flash.utils.Dictionary;
    /**
     * Class to create a weak reference to an object. A weak reference
     * is a reference that does not prevent the object from being
     * garbage collected. If the object has been garbage collected
     * then the get method will return null.
     */
    public class WeakRef
    {
        private var dic:Dictionary;

        /**
         * The constructor - creates a weak reference.
         * 
         * @param obj the object to create a weak reference to
         */
        public function WeakRef( obj:* )
        {
            dic = new Dictionary( true );
            dic[obj] = 1;
        }

        /**
         * To get a strong reference to the object.
         * 
         * @return a strong reference to the object or null if the
         * object has been garbage collected
         */
        public function get():*
        {
            for ( var item:* in dic )
            {
                return item;
            }
            return null;
        }
    }
}

在这个类中,它们如何表示一个弱引用和一个作为强引用.

解决方法

类本身模拟弱引用,可以作为一个传递.
如果没有对该值的其他弱引用,则它是垃圾收集的,因为对它的引用是通过具有弱(引用)键的字典建立的.

只要获得其中的值,就会获得对象本身的引用,就像ActionScript中的所有直接对象引用一样,它是一个强引用.只要您保留该引用,该对象就不会被垃圾回收.

编辑:弱引用和强引用之间的区别
在执行程序期间,需要管理内存.低级语言要求您在不再需要对象时手动分配内存(获取可用空间)并释放它.更高级别的语言使用垃圾收集.这是一个试图确定是否仍然需要对象,或者是“垃圾”,即可以丢弃,释放所需内存的系统.为了确定是否需要对象,垃圾收集器试图找到“知道”该对象的其他对象,即具有对它的引用.当一个对象被其他对象引用时,它会被保留(实际上它不是,因为否则未引用的对象可以循环地相互引用,但是我们不会过多地介绍它们).
因此,“知道”/引用对象具有“保持活着”的副作用,因为它不能被移除.有时,这种副作用并不需要.例如,如果您需要一段时间内所有现有对象的列表以便更快地访问,那么使用此列表将使它们不被丢弃,即使该列表是唯一保持对它们的引用的对象.这就是为什么存在弱引用,与普通引用相反,也可以将其称为“强”,因为它们使对象不被垃圾收集.弱引用允许您引用对象,但被垃圾收集器忽略.这通常非常有用,如上所述.

格尔茨back2dos

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读