gpt4 book ai didi

C# .NET 对象处置

转载 作者:太空狗 更新时间:2023-10-29 18:05:02 24 4
gpt4 key购买 nike

应该很简单。假设我有以下代码:

void Method()
{
AnotherMethod(new MyClass());
}

void AnotherMethod(MyClass obj)
{
Console.WriteLine(obj.ToString());
}

如果我调用“Method()”,在此过程中创建的 MyClass 对象会发生什么情况?调用后它是否仍然存在于堆栈中,即使没有任何东西在使用它?还是立即删除?

我是否必须将它设置为 null 才能让 GC 更快地注意到它?

最佳答案

在对 Method 的调用完成后,您的 MyClass 对象仍然存在,但没有根值对它的引用。因此它将一直存在到下一次 GC 运行时将被收集并回收内存。

除了强制 GC 之外,您真的无法加快此过程。然而,这可能是个坏主意。 GC 旨在清理此类对象,您为使其更快而做出的任何尝试都可能导致其整体变慢。您还会发现 GC 在正确清理托管对象的同时,实际上可能不会减少系统中的内存。这是因为 GC 保留它以备将来使用。这是一个非常复杂的系统,通常最好留给它自己的设备。

关于C# .NET 对象处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111089/

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