直升机.我是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手动调用.因此,如果您不需要同时使用这些对象,只需将它们排除在范围之外并构造新对象.垃圾收集器足够智能,必要时会清理它们.例如,如果你有足够的空闲内存,它可能不会打扰,但如果内存开始运行低,它将收集它们.它经过了高度优化.
| 归档时间: |
|
| 查看次数: |
2571 次 |
| 最近记录: |