我怎样才能得到可靠的/一致的最大内存使用结果下点网

本文关键字:内存 大内 结果 | 更新日期: 2023-09-27 18:04:53

我们有各种测试来监视应用程序(或子组件)在各种场景下的内存使用情况,以检查回归。问题是我们的测量值(使用Process.Refresh(); Process.PrivateMemorySize64)在不同的运行中波动很大。

我们当前正在做的是每X毫秒通过一个后台线程轮询。我们将达到的最大值与基准进行比较,并相应地通过/失败。

有趣的是,减少轮询之间的时间显著降低了记录的最大内存值。在一个示例中,每100ms读取一次内存,最大可获得360MB,每10ms读取一次内存,最大可获得147MB,每1ms读取一次内存,最大可获得35ms。据推测,观察次数的增加在某种程度上使GC行为更具攻击性。

我想主要的问题是我们试图测量的东西,"最大内存使用",并没有特别好的定义。如果有足够的可用内存,GC可能不会费心启动,因此内存使用量会显得更高。

是否有一种标准的方法来测量dot net下的内存使用情况,以防止性能下降?

我怎样才能得到可靠的/一致的最大内存使用结果下点网

我想主要的问题是我们试图测量的东西,"最大内存使用",并没有特别好的定义。如果有足够的可用内存,GC可能不会费心启动,因此内存使用率会显得更高。

这是你的问题。垃圾收集的运行时在可用时使用更多内存并不是任意的。当这些算法有更大的内存空间来"玩耍"时,它们的性能会大大提高。对于客观分析,必须使用一个工具来分析可达集,该集不受垃圾收集行为的影响。

您可以使用PerformanceCounter class来测量您的内存使用情况

链接:http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx

您可以手动使用Memory Profiler tool来检查您的内存

链接:http://memprofiler.com/