提问人:Bram 提问时间:11/16/2023 最后编辑:FildorBram 更新时间:11/17/2023 访问量:40
检测到不成比例的死物数量
a disproportionate amount of dead objects were detected
问:
我举了一个简单的例子来展示这个问题。我有一个 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 不存在于函数范围之外。 每次我执行函数时,堆大小都不会有太大变化:
然而,进程内存不断增长,我没有看到它在缩小。在 Visual Studio 的内存分析器中,收到以下警告:
在此处输入图像描述
为什么这个死对象会一直保留在内存中,直到程序关闭,我该如何防止它?
tried:清除列表,list = null,list。TrimExcess() 中。
答: 暂无答案
评论
GC.Collect(0);
TestMemory()
TestClas()