如何计算我的代码的内存使用率以找到最佳方法C#?

如何计算我的代码的内存使用率以找到最佳方法C#?,c#,memory,C#,Memory,我正在做一个服务应用程序,将持续运行,我需要在我的代码内存使用照顾 我使用Stopwatch类来计算代码性能 例如,对于返回值vs Out参数,我只是使用迭代次数较高的for()循环来计算它,发现Out参数比从方法返回值花费的时间更少 int Iterations = 10000000; Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i < Iteration

我正在做一个服务应用程序,将持续运行,我需要在我的代码内存使用照顾

我使用Stopwatch类来计算代码性能

例如,对于返回值vs 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);
int迭代次数=10000000;
秒表sw=Stopwatch.StartNew();
对于(int i=0;i
同样地, 我想计算我的代码的内存使用量,即在将位图数组作为值类型参数传递给另一个方法时占用的内存量。 因此,我可以找出内存使用率高的问题,并相应地更改代码

因此,这将极大地帮助我找到最好的方法,而不是谷歌搜索


谢谢。

具有自动内存管理(垃圾收集)的系统中的内存消耗。

在一种情况下,应用程序可以生成很多未处理的对象,而GC不会释放它们。在另一种情况下,GC可以主动释放内存。因此,气相色谱应作为活性组分考虑

int[] gccounts = new int[GC.MaxGeneration + 1];
for (int i = 0; i &lt;= GC.MaxGeneration; i++)
    gccounts[i] = GC.CollectionCount(i);

@Mitch wheat,这是为了获得全进程内存使用率,我以前就知道了。但我想在这里做的是,计算。查找特定代码段的内存使用情况,但它不会显示正确的内存使用情况,是否有任何调试工具可用于实现相同的功能?VS2015诊断工具具有堆探查器。这并不完全是您想要的,但我认为在GCed环境中,您不能比堆分析做得更好。我没有正确地理解您。请解释你可以看到更多事实上我的情况是,从数据库读取数据集并提取相同的数据集,然后将svg文件转换为图像,然后需要向收件人发送邮件。为此,我还有4个方法,并将struct和dataset、位图数组传递给每个方法。因为它是一个全职服务应用程序,我需要注意内存和性能。上面的代码也是在高优先级线程中运行的。如果我把它全部放在一个方法中,那么它可能看起来很难看,不符合编码标准。请告知抱歉,我也是新来的,我正在执行c#过去3个月,因为我已经执行了内存查找程序,但我还没有走到这一步好的,谢谢你的时间。