我正在使用.net 4內存緩存。我想將緩存的大小限制爲10mb,因爲我不希望我的應用程序濫用那裏的內容。有沒有辦法在System.Runtime.Caching中強制執行MemoryCache的大小限制?
我也想知道我的緩存多少內存在任何給定的時間。我怎麼能在運行時分辨?
我正在使用.net 4內存緩存。我想將緩存的大小限制爲10mb,因爲我不希望我的應用程序濫用那裏的內容。有沒有辦法在System.Runtime.Caching中強制執行MemoryCache的大小限制?
我也想知道我的緩存多少內存在任何給定的時間。我怎麼能在運行時分辨?
您可以配置做到這一點...例如...
<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name="Default"
cacheMemoryLimitMegabytes="52"
physicalMemoryLimitPercentage="40"
pollingInterval="00:04:01" />
</namedCaches>
</memoryCache>
</system.runtime.caching>
要做到這一點在代碼中看到... this msdn page
您可以指定專門的物理內存的最高金額應用程序配置文件中的MemoryCache
使用namedCaches元素,或者通過在創建MemoryCache
實例時通過將NameValueCollection
傳遞到constructor的設置傳入設置,方法是在集合中輸入條目,密鑰爲cacheMemoryLimitMegabytes,值爲10
。
這裏是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);
這blog post細節幾乎所有的辦法配置MemoryCache
對象,並且一些示例已根據此來源進行了修改。
似乎在這個時候分配給高速緩存的最大內存量不能強制執行。看到這個帖子以備將來參考:MemoryCache does not obey memory limits in configuration
酷!你能用代碼做它嗎?你知道如何判斷緩存有多大? – 2011-04-05 04:03:13
我不知道如何讓高速緩存大小... – 2011-04-05 04:10:26
您應該可以,因爲它需要的配置項目在它的構造......作爲一個名稱值集合。 – 2011-04-05 04:13:31