Ome*_*ega 25 .net c# garbage-collection
垃圾收集器是在一个单独的进程中启动的吗?
例如:
如果我们尝试测量一些代码所花费的处理时间,并且在此期间垃圾收集器开始收集,它将在新进程或同一进程中启动吗?
它是否像以下一样工作?
//Code (Process 1)
--> Garbage Collector Run (Process 1)
//Code (Process 1)
Run Code Online (Sandbox Code Playgroud)
或者像这样?
//Code (Process 1)
--> Garbage Collector Run (Process 2)
//Code (Process 1)
Run Code Online (Sandbox Code Playgroud)Pat*_*man 29
垃圾收集器在同一个进程上运行触发垃圾收集的线程.它会停止所有当前线程,并自行执行.它肯定没有启动另一个进程,你会在Windows中看到它.
来自MSDN:
在垃圾收集开始之前,除了触发垃圾收集的线程之外,所有托管线程都将被挂起.
(这仅适用于工作站,正如DrKoch所指出的那样).服务器有一个后台线程运行垃圾回收.
如果您在引用的文档中搜索"并发垃圾收集",那么您将使用支持此文本的"GC线程"文本.
如果您愿意,可以强制在单独的线程中运行garabage集合.把它放在你的app.config:
<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
(从这个答案)
另请阅读.NET Framework 4.5包括针对客户端和服务器应用程序的新垃圾收集器增强功能,如Adam Houldsworth所建议的,关于自.NET 4.5以来垃圾收集器工作方式的变化.
| 归档时间: |
|
| 查看次数: |
2687 次 |
| 最近记录: |