Как использовать профилировщик распределения памяти AQTime в программе, которая использует большой объем памяти?
Я считаю, что AQTime трудно использовать, потому что он слишком сильно мешает оригинальной программе. Если у меня есть программа, которая использует, например, 300 МБ ОЗУ, я могу без проблем использовать профилировщик распределения AQTime и выяснить, где используется большая часть памяти. Тем не менее, я заметил, что при работе в AQTime оригинальная программа использует больше 1 ГБ в процессе профилирования.
Прямо сейчас я пытаюсь уменьшить использование памяти в программе, которая использует 1,4 ГБ памяти. Если я запускаю его под AQTime, то оригинальная программа использует все 2 ГБ адресного пространства и вылетает. Конечно, я могу изобрести меньший набор тестовых данных и оценить, как будет использоваться объем памяти с полным набором данных, но причина, по которой я в первую очередь использую профилировщик, состоит в том, чтобы попытаться избежать такого рода догадок.
У меня уже есть AQTime, установленный на "Сбор информации стека - нет", и все флажки, связанные с проверкой целостности памяти, отключены, и я пытался ограничить профилируемую область только несколькими классами, но, похоже, это не улучшить что угодно. Есть ли способ использовать AQTime, который дает меньше накладных расходов? Или, в случае неудачи, какие существуют другие подходы, чтобы получить хорошее представление об используемой памяти?
Приложение написано в Delphi 2010, и я использую AQTime 6.
NB. Помимо увеличения использования памяти, работа под AQTime очень сильно замедляет работу приложения, делая все упражнение не просто невозможным, но и непрактичным:-P
1 ответ
AFAIK профилировщик распределения будет отслеживать распределение блоков памяти независимо от областей профилирования. Области профилирования используются для отслеживания создания экземпляров классов. Конечно, профилирование памяти приложения, которое выделяет большой объем памяти, является проблемой, вы можете попытаться использовать флаг LARGE_ADRESS_AWARE и загрузочный переключатель /3GB или использовать 64-битную систему (если у вас есть по крайней мере 4 ГБ память или больше). Также вы можете сделать снимок состояния приложения до его сбоя, чтобы увидеть, где выделена память. Профилирование требует времени, в любом случае, вам может потребоваться некоторое время для его запуска.