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

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

例如:

>如果我们尝试测量某些代码所花费的进程时间,并在此期间垃圾收集器开始收集,它将开始一个新的进程还是在同一个进程?
>它是否像下面这样工作?

//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线程”,它支持这个。

你可以强制在一个单独的线程中运行garabage集合,如果你想。把它放在你的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以来的方式的变化。

http://stackoverflow.com/questions/29208284/is-the-garbage-collector-running-in-a-separate-process

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 垃圾收集器是否在单独的进程中运行?