【问题标题】:Limitation of memory usage in Asp.net CoreAsp.net Core 中的内存使用限制
【发布时间】:2016-12-19 15:18:48
【问题描述】:

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

【问题讨论】:

    标签: asp.net-core memorycache


    【解决方案1】:

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

    由于MemoryCacheOptions 中没有SizeLimit 属性,如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?).
    

    因此,包将占用操作系统允许您的代码拥有的内存。当它达到该限制时,它将开始压缩(驱逐)缓存条目。

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

    【讨论】:

    • SizeLimit 是指大小(以字节为单位)吗?
    • 另外,SizeLimit 没有单位。设置缓存条目时需要设置大小。
    猜你喜欢
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2017-05-12
    • 1970-01-01
    • 2021-12-13
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多