Я пытаюсь использовать UMDH, чтобы найти, где выделяются огромные куски памяти, но результаты, которые я получаю, кажутся совершенно абсурдными.UMDH & perfmon private bytes
Я запускаю программу, жду, пока она достигнет равновесия, а затем возьмет снимок с umdh. Затем я выполняю действия, которые заставляют его всасывать память, ждать, пока она снова достигнет равновесия, и возьмите еще один снимок. Тогда я бегу диф:
umdh -d -v 1.txt 2.txt > diff.txt
Я свидетельствование 500M дополнительных частных байтов в PerfMon (другие счетчики памяти также растут, соответственно). UMDH diff показывает «уменьшение ...» некоторого огромного количества. Чего-чего??? Может ли кто-нибудь объяснить, почему это может быть так?
Затем я прокомментировал всю активность в функции, о которой сообщалось в самом большом стеке роста. Я снова выполнил вышеуказанный повтор, посмотрел тот же шаблон роста 500M, но UMDH сообщает о небольшом увеличении в использовании памяти! Очень мало было оперативного слова.
Первая часть действительно взрывает мой разум. Что может привести к тому, что UMDH продемонстрирует снижение использования кучи, но perfmon продемонстрирует довольно большой рост использования выделенной памяти в том же процессе?
Я рассматривал потоки стеков, но количество стека потоков фактически уменьшается. Что еще может пойти в «личные байты»?