【问题标题】:Garbage collection in .Net 4.0.Net 4.0 中的垃圾收集
【发布时间】:2009-07-21 01:19:37
【问题描述】:

.Net 4.0 垃圾收集器执行有什么变化吗?

【问题讨论】:

    标签: .net garbage-collection .net-4.0


    【解决方案1】:
    【解决方案2】:

    还有 AppDomainResourceManager 功能,可让您跟踪每个 appdomain 的资源使用情况(内存和 CPU)。 此功能的 GC 部分是能够获取每个 appdomain 内存跟踪。

    【讨论】:

      【解决方案3】:

      还有一个ephemeron 实现,它使用一个名为System.Runtime.CompilerServices.ConditionalWeakTable 的新类,即detailed here

      这对于收集允许在任意实例上设置任意“属性”的动态语言很有用。

      【讨论】:

      • 出于好奇,您知道其他使用 ephemerons 的类吗?例如,如果希望创建从对象X 到对象Y 的单个链接,那么除了创建ConditionalWeakTable 实例以保持单个链接之外,还有其他方法吗?
      • @supercat 为此,自.Net 1.0 以来就有System.WeakReference
      • 当我说从XY 的“链接”时,我的意思是如果X 存在这样的引用,系统将认为Y 具有强根引用,没有X 本身必须持有对Y 的引用。在 .net 4.0 中,Y 可以通过具有 ConditionalWeakTable myCWT 字段并执行 myCWT.Add(X, this); 来创建从 X 到自身的此类引用。但是,为了保存一个项目而创建一个表似乎是一种浪费,除非创建一个这样的项目的运行时成本与创建一个表的成本相当。
      【解决方案4】:

      是的,很多。

      我的最新一本书Visual F# 2010 for Technical Computing 包含了很多关于 .NET 4 以及 F# 本身的性能相关信息,并且性能测量和建议与 .NET 4 和新的后台垃圾收集器完全不同。在许多情况下,我们看到了显着的性能改进,但也有一些放缓。

      【讨论】:

        【解决方案5】:

        另外,请查看从事 GC 工作的开发人员的 blog,其中有一篇关于新 GC 的文章,以及关于 .NET 4.0 GC 的 Channel 9 采访的链接。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-21
          • 1970-01-01
          • 2011-06-16
          • 1970-01-01
          • 2010-10-04
          • 1970-01-01
          相关资源
          最近更新 更多