Сколько памяти мое приложение Windows действительно использует?

Еще один, который я любил: Никакие преступления..:)

, как это работает

alt text

7
задан mmr 22 July 2009 в 16:26
поделиться

4 ответа

Как я понял, Диспетчер задач показывает Рабочий набор;

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

через http://msdn.microsoft.com/en-us/library/cc432779 (PROT.10) .aspx

Диспетчер задач также может отображать виртуальную память.

Я обычно использую perfmon (Пуск -> Выполнить ... -> perfmon) для отслеживания использования памяти с помощью счетчика Private Bytes. Он отражает память, выделенную вашими обычными распределителями (new / HeapAlloc / malloc и т. Д.).

2
ответ дан 7 December 2019 в 14:36
поделиться

Это зависит от того, о какой памяти вы говорите. К сожалению, есть много разных способов измерить память. Например ...

  • Выделенная физическая память
  • Выделенная виртуальная память
  • Виртуальная память зарезервирована (но не зафиксирована)
  • Частные байты
  • Общие байты

Какая метрика вас интересует?

Я думаю, что большинство людей, как правило, интересует категория «Выделенная виртуальная память».

0
ответ дан 7 December 2019 в 14:36
поделиться

Память сложно измерить. Приложение может зарезервировать много виртуальной памяти , но на самом деле не будет использовать ее большую часть. Часть памяти может быть разделена; то есть разделяемая DLL может быть загружена в адресное пространство нескольких приложений, но загружается в физическую память только один раз.

Хорошей мерой является рабочий набор , который представляет собой набор страницы в его виртуальном адресном пространстве, к которым недавно осуществлялся доступ. Значение слова «недавно был осуществлен доступ» зависит от операционной системы и ее алгоритма замены страниц . Другими словами, это фактический набор виртуальных страниц, которые отображаются в физической памяти и используются в данный момент. Это то, что вам показывает диспетчер задач. Выберите столбцы .

Самая важная вещь : если вы действительно хотите измерить, сколько памяти использует ваша программа, чтобы увидеть, нужно ли вам оптимизировать часть ее для пространства или выбрать лучшие структуры данных или сохранить некоторые вещи на диск, использование диспетчера задач - неправильный подход. Вы почти наверняка должны использовать профилировщик.

Выберите столбцы .

Самая важная вещь : если вы действительно хотите измерить, сколько памяти использует ваша программа, чтобы увидеть, нужно ли вам оптимизировать часть ее для пространства или выбрать лучшие структуры данных или сохранить некоторые вещи на диск, использование диспетчера задач - неправильный подход. Вы почти наверняка должны использовать профилировщик.

2
ответ дан 7 December 2019 в 14:36
поделиться

Статистика памяти, отображаемая диспетчером задач, не является почти всей доступной статистикой, ни особенно хорошо представлены. Я бы использовал отличный бесплатный инструмент от Microsoft Sysinternals, VMMap , для дальнейшего анализа памяти, используемой приложением.

Если это длительное приложение, и использование памяти со временем растет, это будет куча, которая растет. Части кучи могут или не могут быть выгружены на диск в любое время, но вам действительно нужно оптимизировать использование кучи. В этом случае вам необходимо профилировать свое приложение. Если это приложение .Net, я могу порекомендовать профилировщик Redgate ANTS. Это очень простой в использовании. Если это собственное приложение, то профайлер Intel vtune довольно мощный. Ты не Не нужен исходный код процесса, который вы профилируете для любого инструмента.

Оба приложения имеют бесплатную пробную версию. Удачи.

PS Извините, я не добавил больше гиперссылок на инструменты, но это мой первый пост, и stackoverflow ограничивает первые посты одной гиперссылкой :-(

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

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