代码之家  ›  专栏  ›  技术社区  ›  Razor

垃圾收集器是否有任何配置?

  •  3
  • Razor  · 技术社区  · 14 年前

    据我所知,垃圾收集器会在应用程序运行时自我调整,例如,在收集托管堆上的对象时使用的阈值会随着时间的推移而调整(根据MSDN)。

    3 回复  |  直到 14 年前
        1
  •  9
  •   Hans Passant    10 年前

    是的,垃圾收集器算法中有一个启发式算法,它可以自动调整分配策略。最明显的副作用是,当程序运行并消耗内存时,第0代堆的大小会增加。通常从2 MB开始,如果程序快速消耗内存,它可以达到~8 MB。Perfmon.exe中可见的性能计数器对此很有用。

    启发式的细节没有记录。不过,您可以从今天的出版社美国专利局(uspatentoffice)收集一些软件算法文档的背景信息。微软的大部分GC算法专利都归功于帕特里克·杜苏德(Patrick Dussud),你只要在谷歌上查询他的名字就可以很容易地找到它们。这里是 a relevant one .

        2
  •  5
  •   PeterVermont    8 年前

    不,运行时不记得它在运行期间学习的以前的垃圾回收“设置”。

    <configuration>
       <runtime>
          <gcServer enabled="true"/>
       </runtime>
    </configuration> 
    

    <configuration>
       <runtime>
          <gcConcurrent enabled="false"/>
       </runtime>
    </configuration>
    

    gcServer的完整文档可以在中找到 MSDN .

    gcConcurrent的完整文档可以在中找到 MSDN

        3
  •  1
  •   Community PPrice    7 年前

    请参考我的答案,其中包括不同GC配置/模式的描述:

    Determining which garbage collector is running