首页 > 解决方案 > asp.net core IConfiguration 的内存占用

问题描述

在 asp.net core 应用程序中,应用程序启动时,默认IConfiguration填充的是从 appsettings、环境变量..到 azure keyVault 的所有配置数据。

我有 500 多个配置数据(其中大部分来自 azure keyVault)。

问题是 - 它的内存占用是多少,只要应用程序运行,它是否一直在内存中,这会降低应用程序的性能吗?

在此处输入图像描述

标签: asp.net-coreconfiguration

解决方案


在我看来,只要应用程序运行,这些值就会一直保留在内存中,它可以使进程更加健壮并提高应用程序性能。

一般来说,当.net核心应用启动时,一些服务可能需要这个配置数据,所以,它会读取所有的配置数据进行配置,然后,当你想使用它时,你可以从Configuration变量中获取值。这种方法使流程更加健壮,例如使用依赖注入 (DI) 来加载具有这些值的服务。此外,关于 KeyVault 值,Secrets 会被缓存,直到调用 IConfigurationRoot.Reload()。在执行重新加载之前,应用程序不会尊重密钥保管库中过期、禁用和更新的机密。更多详细信息,可以参考这篇文章: ASP.NET Core Asp.net Core Store配置
中的Azure Key Vault Configuration Provider


推荐阅读