在c#中删除非常大的对象

ghe*_*het 3 .net c# windows

直升机.我是c#的新手,我用GC删除了我的代码无法访问的对象.新问题是我正在使用一些大的(7-40 MB)对象,好处是我不需要一次全部,所以是否有任何可行的方法来删除对象?我试过这个:

- create big object X
- use big object X
  X = null; /*so I don't have any referance to it any more*/
  GC.Collect();
  GC.WaitForPendingFinalizers(); - create next big object ....`
Run Code Online (Sandbox Code Playgroud)

这是否保证在GC.WaitForPendingFinalizers();退出后删除大对象?

我知道我应该克服我的设计让对象变得更加强大,但是相信我,我试过它,这使逻辑变得复杂.如果没有其他方法我会这样做,代码会增加2或3倍.

谢谢!

Dar*_*rov 16

你不需要这样做.避免GC.Collect手动调用.因此,如果您不需要同时使用这些对象,只需将它们排除在范围之外并构造新对象.垃圾收集器足够智能,必要时会清理它们.例如,如果你有足够的空闲内存,它可能不会打扰,但如果内存开始运行低,它将收集它们.它经过了高度优化.