首页 > 解决方案 > 调试时进程内存增加

问题描述

我有这个控制台程序:

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)它略有上升。

进程内存图

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

内存使用快照

谁能解释一下为什么会涨?还有什么我可以做的来阻止它上升吗?

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

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

这是它打印的内容:

控制台结果

标签: c#visual-studiomemory-managementvisual-studio-2017

解决方案


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

因此,当线程数开始变得恒定时,它将停止上升并继续在相同数量的进程内存中。

50 分钟调试图

所以一开始它肯定是慢慢上升的,因为它最多旋转 15 个线程(在任务管理器中找到这个数字在 details 下)


推荐阅读