В современных Windows действительно нет единой правды о «общем потреблении памяти». Конечно, это зависит от определения, но реальный вопрос в том, что вы хотите сделать с ответом.
Некоторые процессы, такие как SQL-Server, как правило, используют каждый байт памяти, который они могут получить, если вы позволите им. Сборщик мусора .NET CLR контролирует использование памяти и действует соответствующим образом, пытаясь освободить больше памяти, когда ее становится мало.
Так, например, у вас может быть система с 8 ГБ физической памяти, из которых 90% «используется». Сколько из этой памяти на самом деле нужно , сказать очень сложно. Эта же система может работать на компьютере объемом 4 ГБ без заметного снижения производительности или каких-либо других проблем.
Если вы хотите изучить некоторые сложности управления памятью в Windows, загрузите "VMMap v2.0" с прежнего сайта sysinternals. Он показывает очень детальное использование памяти для каждого процесса и может помочь вам в вашем квесте.
Цитировать из справки VMMaps:
VMMap подразделяет память на один из нескольких типов:
Изображение
Память представляет собой исполняемый файл, например .exe или .dll. В столбце Сведения указан путь к файлу.
1020 * Частный *
Частная память не может использоваться совместно с другими процессами, взимается за лимит системной фиксации и обычно содержит данные приложения.
Shareable
Совместно используемая память может использоваться совместно с другими процессами, взиматься за лимит системной фиксации и, как правило, содержит данные, совместно используемые библиотеками DLL в различных процессах или сообщениях межпроцессного взаимодействия. API-интерфейсы Windows называют этот тип памяти разделами на основе файла подкачки.
Сопоставленный файл
Память представляет файл на диске, а в столбце Сведения отображается путь к файлу. Сопоставленные файлы обычно содержат данные приложения.
Heap
Кучи представляют собой память, управляемую менеджером кучи в пользовательском режиме, и, как и личная память, взимаются с системного лимита и содержат данные приложения.
Управляемая куча
Управляемая куча представляет память, выделенную и используемую сборщиком мусора .NET.
Stack
Стеки - это память, используемая для хранения параметров функций, локальных переменных функций и записей вызовов функций для отдельных потоков. Стеки заряжаются против предела фиксации и обычно растут по требованию.
System
Системная память - это физическая память в режиме ядра, связанная с процессом. Подавляющее большинство системной памяти состоит из таблиц страниц процесса.
Free
Свободные области памяти - это пространства в адресном пространстве процесса, которые не выделены.
Теперь вам просто нужно определить, какие типы памяти вы считаете «используемыми», сложить их для всех процессов, удалить несколько дубликатов и посмотреть на число ... Есть причина, почему в диспетчере задач или других инструментах, нет единого числа, помеченного как «Общее потребление памяти»: -)