Как вычислить частный рабочий набор (память)?

Как я вычисляю частный рабочий набор памяти с помощью C#? Я интересуюсь созданием примерно тех же чисел как taskmgr.exe.

Я использую Process пространство имен и методы/данные использования как WorkingSet64 и PrivateMemorySize64, но эти числа выключены на 100 МБ или больше время от времени.

9
задан Vinyl Warmth 3 November 2018 в 19:04
поделиться

2 ответа

Это число сильно варьируется, вы не можете его вычислить. Диспетчер памяти Windows постоянно меняет местами страницы в ОЗУ и из нее. TaskMgr.exe получает его от счетчика производительности. Вы можете получить такое же число следующим образом:

using System;
using System.Diagnostics;

class Program {
    static void Main(string[] args) {
        string prcName = Process.GetCurrentProcess().ProcessName;
        var counter = new PerformanceCounter("Process", "Working Set - Private", prcName);
        Console.WriteLine("{0}K", counter.RawValue / 1024);
        Console.ReadLine();
    }
}

Имейте в виду, что число на самом деле не имеет большого значения, оно упадет, когда другие процессы начнутся и будут конкурировать за оперативную память.

30
ответ дан 4 December 2019 в 07:14
поделиться

Может быть, GC.GetTotalMemory предоставит вам необходимые данные?

0
ответ дан 4 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: