是.net系统范围内的垃圾收集器还是应用程序范围内的垃圾收集器?

Sye*_*yed 12 .net c# garbage-collection

在与我的同事讨论期间,我怀疑.net中的垃圾收集器是在系统范围内还是在应用程序范围内工作.

意味着每个具有自己的GC的应用程序是否会影响系统性能?

我对此有点困惑.

Jon*_*eet 23

每个进程都有自己的托管堆,将分别收集.

没有系统范围的堆,因此没有系统范围的GC.

(如果你在同一个进程中运行多个CLR,那么每个CLR都有自己的GC.但这种情况非常罕见.)


Tim*_*oyd 7

在.Net运行时的Workstation\Server版本中,每个进程都有一个垃圾收集器.GC为每个托管进程引入了CPU开销.

这是否会对系统性能产生影响取决于您拥有多少个托管进程以及他们是否花费了大量时间来收集垃圾.您可以通过检查性能计数器"在GC中消耗的时间百分比"来分析您的流程花费多少时间来收集垃圾.


cdh*_*wie 5

每个应用程序都有自己的堆和 .NET 运行时实例,因此它也有自己的垃圾收集器线程。