【发布时间】:2016-11-16 05:35:12
【问题描述】:
我正在做一个服务应用程序,它将持续运行,因为我需要注意我的代码中的内存使用情况。
我正在使用 Stopwatch 类来计算代码性能,
例如)返回值与 Out 参数 - 我只是使用具有更高迭代次数的 for () 循环来计算它,发现 Out 参数比方法返回值花费的时间更少。
int Iterations = 10000000;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < Iterations; i++)
{
BigStruct bs = ReturnValue();
total += bs.dec1;
}
sw.Stop();
Console.WriteLine("Using return value: {0}",
sw.ElapsedMilliseconds);
sw = Stopwatch.StartNew();
for (int i = 0; i < Iterations; i++)
{
BigStruct bs;
OutParameter(out bs);
total += bs.dec1;
}
`Console.WriteLin`e("Using out parameter: {0}",sw.ElapsedMilliseconds);
同样, 我想计算我的代码的内存使用量,同时将位图数组作为值类型参数传递给另一个方法时占用了多少内存。 所以我可以找出高内存使用情况并相应地更改我的代码。
所以这将极大地帮助我找到最好的方法,而不是用谷歌搜索。
谢谢。
【问题讨论】:
-
@Mitch wheat,这是为了获得完整的进程内存使用率,我以前知道。但我想在这里做的是,计算。找出特定代码 sn-ps 的内存使用情况。
-
@Wheat,但是它不会显示正确的内存使用情况,是否有任何调试工具可以实现相同的效果?
-
VS2015 诊断工具有堆分析器。这不完全是你想要的,但我认为你不能比 GCed 环境中的堆分析做得更好