5
我在我的项目中使用IMemoryCache
。我想知道如果我的应用程序将许多长寿命的对象放入缓存中会发生什么。它可以占用所有可用内存吗?我可以全局定义应用程序的最大内存吗?Asp.net核心内存使用限制
我在我的项目中使用IMemoryCache
。我想知道如果我的应用程序将许多长寿命的对象放入缓存中会发生什么。它可以占用所有可用内存吗?我可以全局定义应用程序的最大内存吗?Asp.net核心内存使用限制
这是一年前写的,所以我打算假设你使用Microsoft.Extensions.Caching.Memory
包的v1.x.x
。
由于在MemoryCacheOptions
,如v2.x.x
中没有SizeLimit
属性,因此在深入了解代码一段时间后,我找到了以下一行文档。
/// 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
时的压缩量。
SizeLimit是指以字节为单位的大小? – Makla