如何弱引用来实现?来实现

由网友(我再睡一会儿)分享简介:我不知道如何弱引用在.NET或Java中的内部工作,例如。我的两个总体思路是:I wonder how weak references work internally, for example in .NET or in Java. My two general ideas are:在侵入 - 添加弱引用的列表,以最...

我不知道如何弱引用在.NET或Java中的内部工作,例如。我的两个总体思路是:

I wonder how weak references work internally, for example in .NET or in Java. My two general ideas are:

在侵入 - 添加弱引用的列表,以最顶级的(对象类)。然后,当一个对象被销毁,所有的弱引用可以迭代,并设置为空。 在非侵入式 - 维护对象的指针一个哈希表,以弱引用的名单。当一个弱引用创建一个对象B,也就会修改或创建的哈希表,其主要是指针到B的项目。 脏 - 存储一个特殊的哈希值与每个对象,当对象被销毁这将是零。弱引用将复制该哈希值,并将它与对象的值将比较,以检查是否该对象是活的。这直接使用的时候,所以就需要与该散列值的附加对象将然而导致访问冲突错误,我想。

两个方案都显得干净,也没有效率。有谁知道它实际上是做了什么?

Either of these solutions seems clean nor efficient. Does anyone know how it is actually done?

推荐答案

不知道我理解你的问题,但你可以看看的实现类的WeakReference和Java中的超类引用。它有很好的注释,你可以看到它有专门的GC,另外一个由虚拟机直接用于处理现场。

Not sure I understood your question, but you can have a look at the implementation for the class WeakReference and its superclass Reference in Java. It is well commented and you can see it has a field treated specially by the GC and another one used directly by the VM.

阅读全文

相关推荐

最新文章