2016-08-12 69 views
5

我在我的项目中使用IMemoryCache。我想知道如果我的应用程序将许多长寿命的对象放入缓存中会发生什么。它可以占用所有可用内存吗?我可以全局定义应用程序的最大内存吗?Asp.net核心内存使用限制

回答

2

这是一年前写的,所以我打算假设你使用Microsoft.Extensions.Caching.Memory包的v1.x.x

由于在MemoryCacheOptions,如v2.x.x中没有SizeLimit属性,因此在深入了解代码一段时间后,我找到了以下一行文档。

https://github.com/aspnet/Caching/blob/rel/1.1.2/src/Microsoft.Extensions.Caching.Memory/MemoryCache.cs#L329

/// This is called after a Gen2 garbage collection. We assume this means there was memory pressure. 
/// Remove at least 10% of the total entries (or estimated memory?). 

因此,包会吃掉尽可能多的内存,操作系统将让你的代码有。达到该限制时,它将开始压缩(驱逐)缓存条目。

使用v2.x.x您可以使用SizeLimit属性手动设置限制,您甚至可以设置限制打到CompactionPercentage时的压缩量。

+0

SizeLimit是指以字节为单位的大小? – Makla