如何弱引用来实现? [英] How are weak references implemented?

查看:164
本文介绍了如何弱引用来实现?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

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

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.

这篇关于如何弱引用来实现?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆