2013-12-11 1 views
0

В соответствии с процессом explorer/диспетчер задач мое приложение имеет собственный рабочий набор размером около 190 МБ, даже не выполняя конкретную задачу, что намного больше, чем я ожидал бы от него. Используя FastMM, я подтвердил, что ни одна из них не является фактической утечкой памяти в традиционном смысле.Получение информации об использовании ОЗУ приложения

Я также прочитал соответствующую дискуссию going on here, в которой предлагается использовать FastMM's LogMemoryManagerStateToFile();. Однако выходные генерируемые состояния «21299K Allocated, 49086K Overhead», которые объединены (70MB), намного меньше, чем предлагает диспетчер задач.

Можно ли каким-либо образом узнать, что вызывает огромные различия, может быть, даже 190 МБ является ожидаемым значением для приложения с ~ 15 формами? Кроме того, имеет 70% накладных расходов «плохо», любой способ уменьшить это число?

+0

Не похоже, что это проблема. Помните также, что FastMM - это не единственное, что выделяет память в вашем процессе. –

+0

http://stackoverflow.com/questions/215285/ –

+0

Возможно, это проще, мое приложение использует 120 МБ ОЗУ, которое не отслеживается FastMM, и я пытаюсь получить более подробную информацию, чтобы в конечном итоге уменьшить ее. – DNR

ответ

1

Вы можете использовать VMMap от Sysinternals, чтобы получить полный обзор объема памяти виртуальной памяти, используемого вами для обработки. Это должно позволить вам разобраться в различии, которое вы видите между менеджером taks и FastMM.

Я сомневаюсь, что FastMM отчеты или даже могут сообщить разделы как Mapped File, Shareable, Page Table в то время как эти участки действительно занимают Private WS.

enter image description here

+0

Это говорит мне, что у меня есть 172 МБ «Частных данных» в моем личном рабочем наборе, я не совсем уверен, как использовать эту информацию, чтобы узнать, что на самом деле занимает это пространство ... – DNR

+0

Когда вы нажимаете 'личные данные 'вверху, вы отфильтровываете дно, чтобы просмотреть только этот раздел. Затем внизу указывается адрр и размер этого блока памяти. Что касается использования, эти области get используются, например, для хранения TEB (Block Environment Block) и PEB. Вы можете попытаться найти строки в этой области, используя 'view -> strings', но шансы низкие, вы найдете их в этой области. В конце концов, если вы хотите посмотреть, что получилось в этих адресах, запустите свой отладчик и посмотрите на представление памяти. Интерпретация того, что на самом деле означают эти байты, - это другое дело. –

0

DDDebug может дать вам представление о распределении памяти объектов в вашем приложении. Вы можете отслеживать изменения в реальном времени.

Проверьте пробную версию или ознакомьтесь с вводным видео на веб-сайте.

 Смежные вопросы

  • Нет связанных вопросов^_^