繁体   English   中英

GC 开始时触发事件

[英]trigger an event when GC start

嗨,c# 中的一个小问题,是否可以在垃圾收集器开始工作时触发事件?

如果是,如何?

想象一下这段代码:

while(True){

    if (Gc.IsWorking())
    {
        // some code
    }
}

在单独的线程上运行并检测 gc 何时工作。 我知道当 gc 触发整个应用程序时,整个应用程序会暂停,但是我们可以如何为某些代码部分禁用它,比如使用unsafe ,这样我们就可以让那个线程工作吗?

GC.TryStartNoGCRegion可以暂停 GC。 但这是针对需要非常低且可预测的延迟的非常特殊的场景。 我认为目的是拥有一组旋转的活动节点,并在节点离线旋转时执行任何 GC。

也可以使用本机代码。 我不希望 GC 知道或关心本机线程。

但也不是应该在任何常见场景中使用的解决方案。 对于 99% 的用例,优化分配模式可能就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM