调试过程中内存增加

时间:2018-05-03 14:09:45

标签: c# visual-studio memory-management visual-studio-2017

我有这个控制台程序:

using System;
using System.Threading.Tasks;

namespace ConsoleApp2
{

    class Program
    {
        static void Main(string[] args)
        {
            Task[] t = 
            {
                Run()
            };
            Task.WaitAll(t);

            Console.ReadLine();

        }

        private static async Task Run()
        {
            Console.WriteLine($"Running");
            await Task.Delay(100);
            Run();
        }
    }
}

由于某些原因,当我调试此内容并查看Process Memory (MB)的图表时,它会略微上升。

Process Memory Graph

但是当我拍摄快照并查看内存使用情况时,我看不出任何差异。

Memory Usage snapshots

有人可以解释一下为什么它会上升吗? 还有什么我可以做的,以防止它上升?

编辑: 我尝试添加一个整数并在运行中递增它,并在Run()调用后递减它。

static int k = 0;
private static async Task Run()
{
    k++;
    Console.WriteLine($"{k} Running");
    await Task.Delay(100);
    Run();
    k--;
}

以下是它的印刷品:

Console result

1 个答案:

答案 0 :(得分:0)

显然我太快了,无法停止调试。 10-15分钟后,程序开始变得稳定。

因此,当线程计数开始变为常量时,它将停止上升并继续在相同数量的进程内存中继续运行。

50 min debugging graph

所以它必须在开始时慢慢上升,因为它最多旋转15个线程(在任务管理器中根据细节找到该数字)