Как я могу классифицировать использование памяти приложением / DLL не-NET? - PullRequest
1 голос
/ 30 марта 2009

У меня есть 32-битная Windows DLL-библиотека Visual Studio 8.0 C ++ (не .NET), которая занимает больше памяти, чем я ожидал. Я хочу точно определить, куда направляется память, а не просто одна цифра общей используемой памяти (не интересует значения использования памяти диспетчером задач или монитором ресурсов). В 16-битные дни HeapWalker был очень полезен, и вы даже могли выбрать дескриптор BITMAP и просмотреть его графическое содержимое. Я пытаюсь вспомнить, как читать файл .MAP и добавлять различные разделы, но документации очень мало, и я не уверен, насколько точен этот метод. У кого-нибудь есть совет?

1 Ответ

2 голосов
/ 30 марта 2009

Если вам нужно найти размер различных разделов библиотеки DLL, вы можете использовать dumpbin.exe. Это инструмент командной строки для проверки DLL и исполняемых файлов. Обязательно запустите vcvars32.bat, прежде чем пытаться запустить его.

Чтобы посмотреть на фактическое потребление памяти вашей DLL, я бы предложил начать с umdh.exe. Он поставляется как часть windbg от Microsoft. Пока вы создаете свои файлы с помощью pdb, он сможет разрешать символы в вашем приложении. Затем вы можете сделать несколько снимков памяти, чтобы найти утечки. Вы также можете сделать полный дамп всех выделений, чтобы увидеть, где выделяется память и сколько выделяется.

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