Общее потребление памяти системой - PullRequest
5 голосов
/ 10 июня 2009

Правильно ли предположить, что общее потребление памяти (виртуальное + физическое) системы является суммой столбцов «Использование памяти» и «Размер виртуальной машины», отображаемых диспетчером задач в Windows?

Ответы [ 3 ]

3 голосов
/ 10 июня 2009
2 голосов
/ 10 июня 2009

В современных 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 Свободные области памяти - это пространства в адресном пространстве процесса, которые не выделены.

Теперь вам просто нужно определить, какие типы памяти вы считаете «используемыми», сложить их для всех процессов, удалить несколько дубликатов и посмотреть на число ... Есть причина, почему в диспетчере задач или других инструментах, нет единого числа, помеченного как «Общее потребление памяти»: -)

1 голос
/ 10 июня 2009

Нет, физическая память и виртуальная память могут перекрываться. Если страница памяти находится в виртуальной памяти, а затем перенесена в физическую память, виртуальная память не обязательно освобождается, она может быть зарезервирована для повторного извлечения страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...