Как использовать профилировщик распределения памяти AQTime в программе, которая использует большой объем памяти? - PullRequest
2 голосов
/ 10 января 2011

Я считаю, что AQTime трудно использовать, потому что он слишком сильно мешает оригинальной программе. Если у меня есть программа, которая использует, например, 300 МБ ОЗУ, я могу без проблем использовать профилировщик распределения AQTime и выяснить, где используется большая часть памяти. Однако я заметил, что при работе в AQTime оригинальная программа использует больше 1 ГБ при профилировании.

Сейчас я пытаюсь уменьшить использование памяти в программе, которая использует 1,4 ГБ памяти. Если я запускаю его под AQTime, то оригинальная программа использует все 2 ГБ адресного пространства и вылетает. Конечно, я могу изобрести меньший набор тестовых данных и оценить, как будет использоваться объем памяти с полным набором данных, но причина, по которой я в первую очередь использую профилировщик, состоит в том, чтобы попытаться избежать такого рода догадок.

У меня уже есть AQTime, установленный на «Сбор информации стека - нет», и все флажки, связанные с проверкой целостности памяти, отключены, и я попытался ограничить профилируемую область только несколькими классами, но это не так. Кажется, ничего не улучшится. Есть ли способ использовать AQTime, который дает меньше накладных расходов? Или, в случае неудачи, какие есть другие подходы, чтобы получить представление об используемой памяти?

Приложение написано на Delphi 2010, и я использую AQTime 6.

NB. Помимо увеличения использования памяти, запуск под AQTime сильно замедляет работу приложения, делая все упражнение не просто невозможным, но и непрактичным: -P

1 Ответ

0 голосов
/ 10 января 2011

AFAIK профилировщик распределения будет отслеживать распределение блоков памяти независимо от областей профилирования. Области профилирования используются для отслеживания создания экземпляров классов. Конечно, профилирование памяти приложения, которое выделяет большой объем памяти, является проблемой, вы можете попробовать использовать флаг LARGE_ADRESS_AWARE и загрузочный ключ / 3GB, или использовать 64-битную систему (если у вас есть как минимум 4 ГБ память или больше). Также вы можете сделать снимок состояния приложения до его сбоя, чтобы увидеть, где выделена память. Профилирование требует времени, в любом случае вам может потребоваться некоторое время запустить его.

...