如何销毁.Net中的对象

Ahm*_*eim 2 .net heap object

我知道这是一个奇怪的问题,但我真的很高兴知道答案.你如何破坏.Net中的对象,并将内存返回堆中?

Spi*_*idy 6

简答

System.GC.Collect(); 
Run Code Online (Sandbox Code Playgroud)

假设强制垃圾收集运行,但我听说它更像是一个礼貌的询问函数,可能实际上没有它运行.

答案很长

我相信C#使用垃圾收集,所以最好你可以要求它清理,但它确实是在它自己的时间.如果没有对象的引用,则会将对象视为已销毁.

例如:

Object myobject = new Object();
Object sameobject = myobject;
myobject = null;
//Garbage collection will not clean it up because sameobject is still pointing to the memory location
sameobject = null;
//Garbage collection can now clean it up
Run Code Online (Sandbox Code Playgroud)

这是关于.NET使用的垃圾收集的一篇很棒的文章


Guf*_*ffa 5

您不能,也不应尝试。

如果不再有对对象的引用,则可以进行垃圾回收,如果有机会或需要内存,则将其删除。

垃圾收集器负责删除对象,您应该让它完成其工作而不会尝试进行干扰。试图降低内存使用量本身没有任何价值,计算机由于拥有大量未使用的内存而无法运行得更快。试图使垃圾回收器更早地释放内存只会使您的应用程序变慢。

您可以要求垃圾收集器运行一个收集,但是不能保证它在那个时候实际上会执行一个收集,即使它执行一个收集,也不能保证将收集任何给定的对象。您无法控制何时收集特定对象。