GC开始运行时如何获得信号



我正在开发C#.NET脚本,我想知道在执行垃圾回收器的方法过程中是否调用了垃圾回收器,或者是否像处理信号一样?

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

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

不过,有很多选择可以获得某种通知。例如,您可以有一个执行的线程

var status = GC.WaitForFullGCApproach();

请注意,您还必须使用GC.RegisterForFullGCNotification才能使其工作。当然,它也有自己的性能成本等。调整GC的工作方式通常是个坏主意。

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

最新更新