当 GC 开始 运行 时,我如何获得信号?
How I can get a signal when GC starts running?
我正在开发 C# .NET 脚本,我想知道在执行垃圾收集器的方法期间是否调用或不喜欢处理信号?
我想确定时间延迟是由 GC 引起的。
好吧,当 GC 为 运行ning 时,您的所有线程都将被挂起。因此,当 GC 运行ning.
时,您无法在托管代码中执行任何操作
不过,有很多选项可以获取某种通知。例如,您可以有一个执行
的线程
var status = GC.WaitForFullGCApproach();
请注意,您还必须使用 GC.RegisterForFullGCNotification
才能完成这项工作。当然,它有其自身的性能成本等。调整 GC 的工作方式通常不是一个好主意。
如果想在某段代码运行中查找是否有集合,可以前后用GC.CollectionCount
,看有没有变化。
我正在开发 C# .NET 脚本,我想知道在执行垃圾收集器的方法期间是否调用或不喜欢处理信号?
我想确定时间延迟是由 GC 引起的。
好吧,当 GC 为 运行ning 时,您的所有线程都将被挂起。因此,当 GC 运行ning.
时,您无法在托管代码中执行任何操作不过,有很多选项可以获取某种通知。例如,您可以有一个执行
的线程var status = GC.WaitForFullGCApproach();
请注意,您还必须使用 GC.RegisterForFullGCNotification
才能完成这项工作。当然,它有其自身的性能成本等。调整 GC 的工作方式通常不是一个好主意。
如果想在某段代码运行中查找是否有集合,可以前后用GC.CollectionCount
,看有没有变化。