我正在开发C#.NET脚本,我想知道在执行垃圾收集器的方法中是否调用了处理信号?
我想确定时间延迟是由GC造成的。
答案 0 :(得分:3)
好吧,当GC运行时,所有线程都被挂起。因此,当GC运行时,您无法在托管代码中执行任何操作。
但是,有很多选项可以获得某种通知。例如,你可以有一个
的线程var status = GC.WaitForFullGCApproach();
请注意,您还必须使用GC.RegisterForFullGCNotification
来完成这项工作。当然,它有自己的性能成本等。通过GC的工作方式调整任何内容通常都是一个坏主意。
如果您想在某些代码运行时查找是否有集合,可以在之前和之后使用GC.CollectionCount
,并查看它是否已更改。