Увеличение памяти процесса при отладке - PullRequest
0 голосов
/ 03 мая 2018

У меня есть эта консольная программа:

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

Кто-нибудь может объяснить мне, почему это происходит? И есть ли что-нибудь, что я могу сделать, чтобы не дать ему подняться?

Edit: Я попытался добавить целое число и увеличить его в run и уменьшить его после вызова 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 голосов
/ 04 мая 2018

Так что, очевидно, я был слишком быстр, чтобы остановить отладку. Через 10-15 минут программа начала стабилизироваться.

Таким образом, когда число потоков начинает становиться постоянным, оно перестает расти и просто продолжает работу в том же объеме памяти процесса.

50 min debugging graph

Так что вначале он должен медленно расти, потому что он вращает до 15 потоков (Обнаружено это число в диспетчере задач в деталях)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...