gpt4 book ai didi

c# - 为什么不使用 GC.Collect() 这段代码?我想为数组收集

转载 作者:行者123 更新时间:2023-11-30 21:27:24 26 4
gpt4 key购买 nike

我正在研究垃圾收集。但我有一个问题。即使声明了超过 2GB 的数组并调用了 GC.Collect(),内存仍然存在。为什么 GC.Collect() 不起作用?帮助我。

    static void Main(string[] args)
{

int[] array = null;
array = new int[536870912];
Array.Clear(array, 0, array.Length);
Console.WriteLine("Before GC Collect - GC TotalMemory: {0}", GC.GetTotalMemory(false));

array = null;
GC.Collect();
Console.WriteLine("After GC Collect - GC TotalMemory: {0}", GC.GetTotalMemory(false));
Console.Read();
}

最佳答案

发生这种情况是因为您正在运行调试版本。

对于调试构建,JIT 编译器会保持本地引用处于事件状态,直到定义方法结束。 (实际上有两种情况会这样做:当构建的完整调试信息在 pdb 文件中输出时,以及当您从调试器运行调试构建时。)

如果您尝试发布代码,您会看到内存已释放。

参见 this article by Stephen Cleary了解更多详情。

关于c# - 为什么不使用 GC.Collect() 这段代码?我想为数组收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57769185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com