如何在.NET中暂停垃圾收集?

时间:2009-09-24 17:38:36

标签: .net memory-management garbage-collection performance

我正在对一些处理大量数据的.NET代码运行一些性能测试。我想要一些测试,确保垃圾收集器不影响我的结果。如何暂时暂停垃圾收集器?

3 个答案:

答案 0 :(得分:11)

通过BCL API无法实现此目的。

关闭特定算法的分析也不是一个好主意,因为它会产生错误的结果。垃圾收集器将在程序执行期间运行。没有GC的分析可能会隐藏算法的实际问题,如果它在现实世界中导致大量垃圾收集。

答案 1 :(得分:3)

我知道我回答这个问题有点迟,但根据MSDN http://msdn.microsoft.com/en-us/library/system.runtime.gcsettings.latencymode.aspx,其中一个名为GCSettings.LatencyMode的属性可以设置为LowLatency。除非存在低内存条件或显式调用以启动GC,否则此值将阻止Gen2 GC。

答案 2 :(得分:2)

现实世界将包括垃圾收集。由于这是一个随机到达过程(泊松),因此可能值得以蒙特卡罗方式进行,并进行几次分析运行并对结果求平均值。