Как я могу получить доступную оперативную память или память, используемую приложением?
c#
memory-management
johnnyRose
источник
источник
System.Diagnostics.Process
класс.Ответы:
Ты можешь использовать:
Чтобы получить текущий процесс и использовать:
Чтобы получить частное использование памяти. Для получения дополнительной информации посмотрите эту ссылку .
источник
GetCurrentProcess
, но их нужно обновлять, только если вы выполняете другие операции до доступа к свойствам. Источник - Замечания говорят, что свойства являются правильными в момент создания снимка процесса.Возможно, вы захотите проверить метод GC.GetTotalMemory .
Он извлекает количество байтов, которые в данный момент считаются выделенными сборщиком мусора.
источник
System.Environment имеет WorkingSet - 64-разрядное целое число со знаком, содержащее количество байтов физической памяти, сопоставленных с контекстом процесса.
Если вам нужно много подробностей, есть System.Diagnostics.PerformanceCounter , но для его установки потребуется немного больше усилий.
источник
Смотрите здесь для деталей.
Если вы получите значение 0, его нужно вызвать
NextValue()
дважды. Затем он дает фактическое значение использования процессора. Смотрите подробности здесь .источник
В дополнение к @JesperFyhrKnudsen «s ответ и @MathiasLykkegaardLorenzen » s комментарий, вы бы лучше
dispose
возвращенноеProcess
после его использования.Итак, чтобы избавиться от
Process
, вы можете заключить его вusing
область видимости или вызватьDispose
возвращаемый процесс (proc
переменную).using
объем:Или
Dispose
метод:Теперь вы можете использовать
memory
переменную, которая конвертируется в мегабайты.источник
^
это битовый XOR, а не power. Так что просто пользуйтесьproc.PrivateMemorySize64 / (1024*1024)
, илиproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
как умножение не имеет приоритета над делением.Для полной системы вы можете добавить Microsoft.VisualBasic Framework в качестве ссылки;
источник