回答

3

GC需要冻结所有线程才能检查所有对象。如果某个线程正在运行并正在修改/创建一个对象,它如何完成工作?

最好不要这样做。

您可以执行的操作是在您不希望中断的状态下调用GC.Collect()和GC.WaitForPendingFinalizers()。这会给你一些时间。

0

非托管代码不允许访问未固定的托管对象,但它在垃圾回收期间将不会阻塞地运行。如果你有某些例程必须在垃圾收集期间保持运行,并且它们不需要访问未固定的托管对象,那么可以将这些例程写入非托管代码,并且GC不会影响它们。

相关问题