【发布时间】:2013-03-08 05:46:29
【问题描述】:
我们有各种测试来监控我们的应用程序(或子组件)在各种场景下的内存使用情况,以检查回归。问题是我们的测量值(使用Process.Refresh(); Process.PrivateMemorySize64)在不同的运行中波动很大。
我们目前正在做的是每X 毫秒通过后台线程轮询一次。我们将达到的最大值与基准进行比较,并相应地通过/失败。
有趣的是,减少轮询之间的时间会显着降低记录的最大内存值。在一个示例中,每 100 毫秒读取一次内存最大为 360MB,每 10 毫秒为 147MB,每 1 毫秒为 35 毫秒。 据推测,观察次数的增加以某种方式使 GC 行为更具攻击性。
我认为主要问题是我们试图测量的“最大内存使用量”并没有特别明确。 如果有足够的可用内存,GC 可能不会启动,因此内存使用率会显得更高。
是否有标准的方法来衡量 dot net 下的内存使用情况以防止性能下降?
【问题讨论】:
标签: c# .net memory performance-testing