检测到不成比例的死物数量

a disproportionate amount of dead objects were detected

提问人:Bram 提问时间:11/16/2023 最后编辑:FildorBram 更新时间:11/17/2023 访问量:40

问:

我举了一个简单的例子来展示这个问题。我有一个 blazor 项目,其中包含一个调用函数的页面:

<button @onclick='(() => TestMemory())'>Insert Memory</button>

<h3>Times function is run: @counter</h3>

@code {
    int counter = 0;

    public void TestMemory()
    {
        _agp.TestClas();
        counter++;
    }    
}

调用的函数:

public void TestClas()
{
    List<TestClass> testList = new List<TestClass>();

    for (int i = 0; i < 100000; i++)
    {
        testList.Add(new TestClass() { ArtId = i });
    }
}

testList 不存在于函数范围之外。 每次我执行函数时,堆大小都不会有太大变化:

enter image description here

然而,进程内存不断增长,我没有看到它在缩小。在 Visual Studio 的内存分析器中,收到以下警告:

在此处输入图像描述

为什么这个死对象会一直保留在内存中,直到程序关闭,我该如何防止它?

tried:清除列表,list = null,list。TrimExcess() 中。

C# .NET 内存 垃圾回收

评论

2赞 500 - Internal Server Error 11/16/2023
垃圾回收在内存压力之前不会运行 - 您可以尝试在调用 to 后插入以强制它运行。GC.Collect(0);TestMemory()TestClas()

答: 暂无答案