Правильно ли предположить, что общее потребление памяти (виртуальная + физическая) системы представляет собой сумму столбцов «Использование памяти» и «Размер виртуальной машины», отображаемых диспетчером задач в Windows?
Общее потребление памяти системой
Ответы (3)
Прочтите эти сообщения Марка Руссиновича:
http://blogs.technet.com/markrussinovich/archive/2008/07/21/3092070.aspx
http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx
В современной Windows действительно нет единой правды о «общем потреблении памяти». Конечно, это зависит от определения, но реальный вопрос в том, что вы хотите делать с ответом.
Некоторые процессы, такие как SQL-Server, имеют тенденцию использовать каждый байт памяти, к которому они могут получить доступ, если вы им позволите. Сборщик мусора .NET CLR отслеживает использование памяти и действует соответствующим образом, пытаясь освободить больше памяти, когда она становится дефицитной.
Так, например, у вас может быть система с 8 ГБ физической памяти, 90% которой «используется». Трудно сказать, сколько на самом деле необходимой памяти. Та же система может работать на машине с 4 ГБ без заметной потери производительности или каких-либо других проблем.
Если вы хотите изучить некоторые сложности управления памятью в Windows, загрузите "VMMap v2.0 " с бывшего сайта sysinternals. Он очень подробно показывает использование памяти для каждого процесса и может помочь вам в ваших поисках.
Цитата из справки VMMaps: VMMap подразделяет память на один из нескольких типов:
Изображение. Память представляет собой исполняемый файл, например EXE или DLL. В столбце Details отображается путь к файлу.
Частная Частная память не может использоваться совместно с другими процессами, она взимается в соответствии с системным лимитом фиксации и обычно содержит данные приложения.
Совместно используемая Совместно используемая память может использоваться совместно с другими процессами, она взимается в соответствии с системным лимитом фиксации и обычно содержит данные, совместно используемые библиотеками DLL в различных процессах или сообщениями межпроцессного взаимодействия. API-интерфейсы Windows называют этот тип памяти разделами с поддержкой файлов подкачки.
Сопоставленный файл. Память представляет собой файл на диске, а в столбце «Подробности» отображается путь к файлу. Сопоставленные файлы обычно содержат данные приложения.
Куча. Куча представляет собой память, управляемую диспетчером кучи пользовательского режима, и, как и частная память, взимается в соответствии с системным лимитом фиксации и содержит данные приложения.
Управляемая куча. Управляемая куча представляет собой память, выделенную и используемую сборщиком мусора .NET.
Стек Стеки - это память, используемая для хранения параметров функций, локальных переменных функций и записей о вызовах функций для отдельных потоков. Стеки взимаются сверх лимита фиксации и обычно растут по запросу.
Система Системная память - это физическая память режима ядра, связанная с процессом. Подавляющее большинство системной памяти состоит из таблиц страниц процессов.
Свободно. Свободные области памяти - это неиспользованные пространства в адресном пространстве процесса.
Теперь вам просто нужно определить, какие типы памяти вы считаете «использованной», сложите их для всех процессов, удалите несколько дубликатов и посмотрите количество ... Есть причина, по которой в диспетчере задач или других инструментах нет одно число с надписью «Общее потребление памяти» :-)
Нет, физическая память и виртуальная память могут перекрываться. Если страница памяти находится в виртуальной памяти, а затем выгружается в физическую память, виртуальная память не обязательно освобождается, она может быть зарезервирована на случай, когда страница снова будет выгружена.