gpt4 book ai didi

apache-flex - 弱引用和强引用

转载 作者:行者123 更新时间:2023-12-04 20:24:24 25 4
gpt4 key购买 nike

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 中的所有直接对象引用一样,它是一个强引用。只要您保留该引用,该对象就不会被垃圾收集。

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

问候语
后退2dos

关于apache-flex - 弱引用和强引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com