我正在使用 .net 4 内存缓存。我希望限制缓存大小,比如说10MB,因为我不想让我的应用程序过多地占用缓存空间。
同时,我也想知道当前缓存的内存占用情况。请问在运行时我该如何查询?
同时,我也想知道当前缓存的内存占用情况。请问在运行时我该如何查询?
您可以使用应用程序配置文件中的namedCaches元素,指定专用于MemoryCache
的最大物理内存量;或者通过在传递给构造函数的NameValueCollection
中添加一个键为cacheMemoryLimitMegabytes且值为10
的条目来在创建MemoryCache
实例时传递该设置。
以下是namedCaches
配置元素的示例:
<configuration>
<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name="Default"
cacheMemoryLimitMegabytes="10"
physicalMemoryLimitPercentage="0"
pollingInterval="00:05:00" />
</namedCaches>
</memoryCache>
</system.runtime.caching>
</configuration>
以下是你在创建过程中如何配置MemoryCache
:
//Create a name / value pair for properties
var config = new NameValueCollection();
config.Add("pollingInterval", "00:05:00");
config.Add("physicalMemoryLimitPercentage", "0");
config.Add("cacheMemoryLimitMegabytes", "10");
//instantiate cache
var cache = new MemoryCache("CustomCache", config);
这篇博客文章详细介绍了配置MemoryCache
对象的所有方式,其中一些示例是从该来源适配而来。
你可以在配置中这样做...例如...
<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name="Default"
cacheMemoryLimitMegabytes="52"
physicalMemoryLimitPercentage="40"
pollingInterval="00:04:01" />
</namedCaches>
</memoryCache>
</system.runtime.caching>
要在代码中完成此操作,请参阅... 这个 MSDN 页面
pollingInterval
进行异步操作,并结合一些复杂的技巧,您可以通过使用 ILSpy 来查看。 - Ruben Bartelink