You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制Blazor Server释放内存?内存泄漏问题排查求助

Blazor Server内存管理难题

我在使用Blazor Server时遭遇了棘手的内存管理问题:每次页面刷新都会导致内存消耗持续攀升,更令人担忧的是,即使关闭浏览器,这些多余内存也无法被自动回收。这个问题已经在多个生产环境的应用中显现,目前只能通过重启服务来释放内存。

问题复现步骤

  • 新建一个Blazor Server项目
  • 监控应用重载时的内存变化,可观察到明显的内存峰值持续上升

已排除的常见原因

我已通过配置强制Blazor清理断开连接的电路,但问题仍未解决,说明这并非单纯的Blazor电路预留内存所致。相关配置代码如下:

builder.Services.AddServerSideBlazor(o =>
{
    o.DisconnectedCircuitRetentionPeriod = new System.TimeSpan(0, 0, 3); // 3秒
    o.JSInteropDefaultCallTimeout = new System.TimeSpan(0, 0, 3); // 3秒
    o.MaxBufferedUnacknowledgedRenderBatches = 3; // 从默认10调低
    o.DisconnectedCircuitMaxRetained = 1; // 从默认100调低
});

尝试的缓解措施

将ServerGarbageCollection设置为false后,内存清理效率有所提升,一定程度上缓解了内存攀升的问题——尽管这个设置看似违反直觉,但确实起到了作用。不过,内存仍无法实现完全释放。

排查手段与疑虑

我一直在使用Visual Studio诊断工具和DotMemory进行问题排查,经过大量调研后,不得不怀疑这是Blazor框架本身的固有缺陷,这是长期以来困扰我的难题。

内容的提问来源于stack exchange,提问作者Jesus Fortuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:32:12