gpt4 book ai didi

c# - 强制 GC.Collect() 减少在时间敏感代码期间运行的机会?

转载 作者:太空狗 更新时间:2023-10-29 22:04:11 24 4
gpt4 key购买 nike

在采访中,我被要求想出一种方法来确保 c# 中的代码块可以在一致的时间运行以满足假设的时间要求。面试官提到,一种方式是在代码块执行之前调用垃圾收集器进行收集,这样可以大大降低在该代码块期间GC再次运行的可能性。它被应用于医疗设备的基于时间的精确测量,其中垃圾收集会影响这些测量。

这对我来说很有意义,但我找不到任何支持它的信息。我审查的普遍共识是永远不要调用 GC.Collect(),异常(exception)情况不包括这种情况。

运行 GC.Collect() 真的可以很快降低它运行的可能性吗?这是使用 .net 框架执行此操作的正确方法吗? GC.Collect() 是否也为其他 CLR 程序收集,还是仅适用于当前进程?

最佳答案

Jared 的回答当然非常好。补充几点:

Can running GC.Collect() truly reduce the probability of it running anytime soon?

是的。

Is this the right approach to do this using the .net framework?

我不希望具有对人类生命安全至关重要的功能的软件的正确性取决于对收集器未记录行为的概率猜测。 p>

就是说:您应该在收集之后执行 WaitForPendingFinalizers。请记住,终结器在它们自己的线程上运行,这可能会占用处理器时间。

Does GC.Collect() collect for other CLR programs too or is it only applicable to the current process?

收集会清理当前进程中的托管内存,因此如果您在一个进程中有多个应用程序域,则在一个应用程序域中进行收集会在其他应用程序域中进行收集。它不会跨进程。

关于c# - 强制 GC.Collect() 减少在时间敏感代码期间运行的机会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com