Могу ли я предложить более "хардкорный" подход?
Команда WinDbg's! Heap может раскрыть много важной информации о собственной куче.
Начните с выполнения следующих шагов:
A. запустите GFlags, перейдите на вкладку «Файл изображения», введите имя вашего процесса и нажмите вкладку.
B. нажмите «Включить кучу страниц» и «Создать базу данных трассировки стека в режиме пользователя» и нажмите ОК.
C. начать свой процесс.
Выполнение вышеуказанных шагов скажет окнам собирать информацию о распределении памяти о вашем процессе. мы будем использовать эту информацию позже.
ВАЖНО: сбор этой информации заставит ваше приложение использовать больше памяти и, вероятно, будет медленнее. Windows будет продолжать собирать эту информацию каждый раз, когда вы запустите ваш процесс, пока вы не скажете иначе, запустив GFlags и удалив ваши выборы.
присоедините WinDbg к вашему приложению и установите правильные символы. кроме ваших собственных символов вам понадобятся символы Microsoft. используйте команду .symfix, а затем используйте .reload / f, чтобы WinDbg загрузил правильные символы с сервера символов Microsoft (это может занять несколько минут).
После того, как все символы установлены, выполните следующие шаги:
A. ! heap -stat - увидеть суммарное использование всех куч вашего процесса
B. выберите одну кучу для изучения. тот, у которого наибольшее количество зафиксированных байтов, будет хорошим кандидатом, если вы ищете большие объекты.
C. ! heap -stat -h "дескриптор кучи" - чтобы увидеть статистику выделения кучи. в выводе вы найдете, сколько блоков выделено для каждого размера выделения.
D. выберите один из более высоких размеров выделения и используйте! heap -flt s "size", чтобы вывести все записи кучи одинакового размера.
E. ! heap -p -a "UserPtr" напечатает стек размещения (вместе с другой информацией). эта информация будет недоступна, если вы не установите «Включить кучу страниц» с помощью GFlags.
Вот и все, используйте информацию из стека вызовов и посмотрите на свой исходный код, чтобы идентифицировать эти большие объекты.
B.T.W
Если у вас еще не установлен пакет средств отладки для Windows, вы можете загрузить его с здесь .
Может быть, этот подход не так прост, как вы ожидали, но он работает :)
Повеселись.