是.net系统级或应用程序级的垃圾收集器

本文关键字:收集器 net 系统 应用程序 | 更新日期: 2023-09-27 18:04:53

在与同事的讨论中,我对。net中的垃圾收集器是在系统范围内工作还是在应用程序范围内工作产生了疑问。

意味着如果每个应用程序都有自己的GC,那么它会影响系统性能吗?

我有点困惑

是.net系统级或应用程序级的垃圾收集器

每个进程都有自己的托管堆,这些堆将被单独收集。

没有系统范围的堆,所以不可能有系统范围的GC。

(如果在同一个进程中运行多个clr,它们也都有自己的GC。不过这种情况很少见)

在。net运行时的工作站'服务器版本中,每个进程都有一个垃圾收集器。GC会给每个托管进程带来CPU开销。

这是否对系统性能有影响取决于您有多少个托管进程,以及它们是否花费大量时间收集垃圾。您可以通过检查性能计数器"在GC中花费的时间%"来分析进程花费了多少时间来收集垃圾。

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

看看这个页面(http://msdn.microsoft.com/en-us/library/ee787088.aspx),特别是在托管堆部分。这应该能回答你的问题。