【问题标题】:how to clear cache memory of a Blazor webapp by code如何通过代码清除 Blazor webapp 的缓存内存
【发布时间】:2021-07-05 15:44:05
【问题描述】:

当进程运行时,我的 Blazor 服务器端应用程序使用了过多的缓存。 我想在进程结束时清除 IIS 服务器上的所有 webapp 缓存。 我需要在流程结束时通过代码对其进行编码,但不知道如何....

我们可以在最后一行看到我的应用...

我们可以从 TaskManager 中看到它...

【问题讨论】:

  • 没有“自动”缓存,除非您启用它。除非明确配置,否则 IIS 不会缓存数据或 HTML 输出。即便如此,它的大小也是有限的。这看起来像是应用程序代码中的内存泄漏。
  • @PanagiotisKanavos 感谢您的建议,但您认为我们该如何解决?从哪里泄漏..?或替代解决方案,例如在 iis 上重新启动 webapp ...?
  • 调试时使用Diagnostic Tools窗口实时查看内存使用情况。如果它随着时间的推移不断增加,则存在泄漏。如果您看到锯齿图像,每次 GC 后使用率下降,代码会生成大量临时对象,例如字符串。字符串是不可变的,因此每个字符串操作都会生成新的字符串。通过拆分行和字段来解析 CSV 文件可能会导致 大量 需要收集的垃圾
  • 您可以使用“诊断”窗口中的Memory Usage 选项卡来检查每种类型的实例有多少,它们使用了多少内存,以及自上次快照以来是否生成了新实例
  • @PanagiotisKanavos 是的,我有很多解析 csv 文件解析......并且内存选项卡显示内存增加,就像你说的那样,但只有当我开始处理所有 csv 文件解析时,它才会在上面工作 1 小时,内存容量最高可达 12GB,但是当我的工作完成后如何重新分配这个缓存?你说的是GB?垃圾收集器?如何清空这些垃圾?

标签: c# asp.net-core blazor blazor-server-side


【解决方案1】:

没有找到解决方案,但这是我理解的和我可以分享的。

没有唯一的解决方案,因为它更多地是关于 -> 你如何编码以及你使用的所有好的实践......

你可以看这个话题best pratcises很有趣。

实际上,就我而言,我不得不多清理一些代码并在任何地方编写一些 .Dispose() 函数,而不会破坏我的应用程序来清理我的代码并且它可以工作。

例如:当我使用数据表并完成使用它时,我只需要编写一个 datatable.Dispose();

【讨论】:

    猜你喜欢
    • 2015-07-12
    • 2019-02-11
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多