gpt4 book ai didi

c# - 垃圾收集器是否在单独的进程中运行?

转载 作者:IT王子 更新时间:2023-10-29 04:21:40 26 4
gpt4 key购买 nike

垃圾收集器是否在单独的进程中启动?

例如:

  1. 如果我们尝试测量某段代码所花费的进程时间,并且在此期间垃圾收集器开始收集,它会在新进程上还是在同一进程中启动?

  2. 是不是像下面这样工作?

    //Code (Process 1)
    --> Garbage Collector Run (Process 1)
    //Code (Process 1)

    还是这样?

    //Code (Process 1)
    --> Garbage Collector Run (Process 2)
    //Code (Process 1)

最佳答案

垃圾收集器在同一个进程上运行触发垃圾收集的线程。它停止所有当前线程,并自行执行。它肯定不会启动另一个进程,您会在 Windows 中看到它。

来自 MSDN :

Before a garbage collection starts, all managed threads are suspended except for the thread that triggered the garbage collection.

(这仅适用于工作站,正如 DrKoch 所指出的)。服务器有一个后台线程运行以进行垃圾收集。

如果您在引用文档中搜索“并发垃圾回收”,您将找到文本“GC 线程”,它支持这一点。

如果需要,您可以强制在单独的线程中运行垃圾回收。将其放入您的 app.config:

<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
</configuration>

(来自 this answer)

另请阅读 The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps , 正如 Adam Houldsworth 所建议的那样,关于自 .NET 4.5 以来垃圾收集器工作方式的变化。

关于c# - 垃圾收集器是否在单独的进程中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208284/

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