Asp.net Core中内存使用的限制

Sli*_*lip 7 memorycache asp.net-core

IMemoryCache在我的项目中使用.我想知道如果我的应用程序在缓存中推送许多长生命对象会发生什么.它可以占用所有可用的内存吗?我可以全局定义应用程序的最大内存吗?

jea*_*frg 6

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

由于没有一个SizeLimit在属性MemoryCacheOptions一样v2.x.x,周围挖成的代码一段时间后,我发现文件的下面一行.

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?).
Run Code Online (Sandbox Code Playgroud)

因此,程序包将耗尽尽可能多的内存,因为操作系统将允许您的代码拥有.当它达到该限制时,它将开始压缩(逐出)缓存条目.

随着v2.x.x您可以手动设置限制使用SizeLimit属性,你甚至可以设置压缩量时,限制被击中CompactionPercentage.

  • SizeLimit是指大小(以字节为单位)吗? (5认同)