我在我的项目中使用IMemoryCache
。我想知道如果我的应用程序将许多长期存在的对象推送到缓存中会发生什么。它可以占用所有可用内存吗?我可以全局定义应用程序的最大内存吗?
最佳答案
这是一年前写的,所以我假设您使用的是 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
.
关于asp.net-core - Asp.net Core 中内存使用的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920847/