我在C#中读到了一些关于Weakreference类的内容,但我不确定它的用法。
我有一张超过10或20k条目的大桌子。 当我编写一个List DBFoos时,其中Foo是数据库中的对象。
如果用户只读取并且模式仅用于类之间的通信,那么使用Weakreference而不是Factory / Singelton Pattern的优势在哪里,因为对象的下载需要一段时间?
修改
我在MSDN
上找到了一个例子他们使用Weakreference Dictionary,如:
public class Cache
{
// Dictionary to contain the cache.
public static Dictionary<int, WeakReference> _cache;
如果我使用List设置此Cache对象而不是使用Singelton Like:
public class Foo{
private static Foo foo;
static Foo getreference(){
if(foo == null){
foo = new Foo();
return foo;
}
else
return foo;
}
}
是否有任何优势或不利因素,例如使用弱吸收来收集GC,还是只是一种复杂的保存方式?
答案 0 :(得分:1)
弱引用用于创建缓存,您在缓存中存储弱引用以让垃圾收集器执行作业,因此有时您必须从数据库重新加载一些元素。 使用Singleton,它将创建静态缓存,但不会被使用,但如果有足够的内存,它可以正常工作。