我有一个对象列表,可以由多个用户从WebService访问。但是,列表中的对象数量在稳步增长,因此我需要一些内存管理。我想从列表中清除所有用户未使用的所有元素。但是,我不能仅通过调用GC来完成此操作,因为仍然有一个引用(列表中的一个)。而且我不知道如何获取对一个对象的引用数量。
那么,有没有办法清除所有只有一个引用的对象呢?还是获得参考数量?还是确定列表之外是否没有其他参考?任何解决方案都欢迎。
您可以使用所谓的弱列表。
基本上,弱列表是GC“忽略”其引用的列表。因此,尽管列表中仍然有一个引用,但它不会被计数,并且(取决于您使用的弱列表的实现方式)该项目会在列表中的某一点自动删除。
不幸的是,.NET Framework中没有直接实现弱列表的方法。有一些ConditionalWeakTable,但您可以像列表一样使用它,并且在Web上有一些使用WeakReference
类型或类似机制的弱列表示例。
例子:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句