Kry*_*hic 1 c# garbage-collection callback
我只是想知道在.NET运行时/ C#中是否存在垃圾收集器开始/结束的可覆盖回调.我还要声明我无意试图控制GC,我只是很好奇.
如果没有,那么复制这种行为的最佳方法是什么?
您无法直接在manged代码中获取通知,因为在GC期间托管代码被挂起(或者至少不能保证在后台GC的情况下运行您的线程).
选项:
您可以使用GC.RegisterForFullGCNotification获取大致通知,如 垃圾收集通知文章中所示.
如果需要大致时间,您可以观看与GC相关的性能计数器.
您还可以捕获ETW事件以离线分析行为 - 垃圾收集ETW事件.关于如何做到这一点有许多链接--Windows性能工具包和SO问题,如消费"Windows事件跟踪"事件.
如果真的有必要,你可以自己托管CLR,而不是收到有关GC的通知 - 请参阅CLR Indie Out:托管CLR和CLR托管 - 第3部分.托管CLR以捕获GC的开始/结束时所需的最终方法 - IHostGCManager :: SuspensionStarting.
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |