MemoryCache如何知道它使用了多少内存?

5
.net中的MemoryCache类在使用内存超过限制时会删除项目。它实际上是如何确定其项目使用了多少内存的呢?
1个回答

4

MemoryCache内部有一个CacheMemoryMonitor,定期询问其引用的大小。它利用mscorlib中的一个内部类型SizedReference,它是一个引用,也跟踪其目标使用了多少内存(大约)。

它还从GC收集各种统计信息,以帮助确定内存压力是否应该导致启动逐出进程。


所以基本上这意味着MemoryCache将对存储在其中的整个对象图有一个(好的?)了解,对吗?可以安全地假设它不像简单地累加与其使用的内部Hashtable键相关联的对象引用大小那样天真无邪,是吗? - Gabriel S.
那么……不了解 .net 和 CLR 的内部机制,就无法实现 MemoryCache 吗? - binki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接