Bob*_*sky 6 c# caching garbage-collection memory-management weak-references
假设我有以下对象
public class MyClass
{
public ReadOnlyDictionary<T, V> Dict
{
get
{
return createDictionary();
}
}
}
Run Code Online (Sandbox Code Playgroud)
假设这ReadOnlyDictionary是一个只读包装器Dictionary<T, V>.
该createDictionary方法需要很长时间才能完成,并且返回的字典相对较大.
显然,我想实现某种缓存,所以我可以重用结果,createDictionary但我也不想滥用垃圾收集器并使用很多内存.
我想WeakReference用于字典但不确定这是否是最好的方法.
你会推荐什么?如何正确处理可能被多次调用的昂贵方法的结果?
更新:
我对C#2.0库(单个DLL,非可视化)的建议感兴趣.该库可能在Web应用程序的桌面中使用.
更新2:
该问题也适用于只读对象.我从更改属性的值Dictionary来ReadOnlyDictionary.
更新3:
的T是比较简单的类型(字符串,例如).这V是一个自定义类.您可能认为V创建的实例成本很高.字典可能包含0到数千个元素.
假定代码从单个线程或具有外部同步机制的多个线程访问.
如果没有人使用字典,那么我很好.我试图找到时间之间的平衡(我想以某种方式缓存结果createDictionary)和内存开销(我不想让内存占用超过必要的时间).
| 归档时间: |
|
| 查看次数: |
2033 次 |
| 最近记录: |