GC开始运行时如何获取信号?

时间:2015-03-23 12:24:38

标签: c# .net garbage-collection

我正在开发C#.NET脚本,我想知道在执行垃圾收集器的方法中是否调用了处理信号?

我想确定时间延迟是由GC造成的。

1 个答案:

答案 0 :(得分:3)

好吧,当GC运行时,所有线程都被挂起。因此,当GC运行时,您无法在托管代码中执行任何操作。

但是,有很多选项可以获得某种通知。例如,你可以有一个

的线程
var status = GC.WaitForFullGCApproach();

请注意,您还必须使用GC.RegisterForFullGCNotification来完成这项工作。当然,它有自己的性能成本等。通过GC的工作方式调整任何内容通常都是一个坏主意。

如果您想在某些代码运行时查找是否有集合,可以在之前和之后使用GC.CollectionCount,并查看它是否已更改。