Найти память, занятую простой консольной программой на C #

Мне нужно выяснить время и память, потребляемую простой консольной программой на C #.

.Net Framework имеет утилиту Stopwatch для выполнения первой задачи,

        Stopwatch sw = new Stopwatch();
sw.Start();
Process process = Process.GetCurrentProcess();
long memoryUsedInBytes = process.WorkingSet64;

//do something

sw.Stop();
Console.WriteLine(sw.Elapsed.Milliseconds + "ms elapsed.\n" + memoryUsedInBytes/1000 + " KB consumed");

У нас есть что-то простое в рамках этой структуры, чтобы найти память, потребляемую простой консольной программой, без использования передовых методов диагностики.

РЕДАКТИРОВАТЬ: добавление кода, используемого памятью, как ответил ниже, Хабиб.

2

Решение

Вы можете получить текущий процесс а затем используя свойство WorkingSet64 Вы можете получить размер в байтах.

Свойство Process.WorkingSet64 — MSDN

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

также

Это свойство можно использовать для мониторинга использования памяти на компьютерах с
32-битные процессоры или 64-битные процессоры. Значение свойства
эквивалентно счетчику производительности рабочего набора для процесса.

Process process = System.Diagnostics.Process.GetCurrentProcess();
long memoryUsedInBytes = process.WorkingSet64;
3

Другие решения

.NET-процессы предоставляют довольно богатый набор счетчиков производительности. Вы можете использовать системный монитор Windows, чтобы добавить счетчики в график, либо общие счетчики памяти (выделенные байты и т. Д.), Либо специфичные для .NET счетчики, например байты в каждом поколении GC и т. П.

введите описание изображения здесь

2

Похоже, сборщик мусора может помочь вам

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/8bfa495b-bed2-40fd-adbd-cb998b74af32

GC.GetTotalMemory()
1
По вопросам рекламы [email protected]