I'm trying to use UMDH to find where huge chunks of memory are being allocated but the results I'm getting seem completely absurd.
I start the program, wait for it to reach an equilibrium, and then grab a snapshot with umdh. Then I perform the activity that causes it to suck up memory, wait for it to reach equilibrium again, and grab another snapshot. Then I run a diff:
umdh -d -v 1.txt 2.txt > diff.txt
I'm witnessing 500M of additional private bytes in perfmon (other memory counters also grow accordingly). UMDH diff shows a "decrease of..." some huge number. Say what??? Can anyone explain why that might be the case?
Then I commented out all activity in the function that was reported in the largest growth stack. I performed the above repro again, watched the same 500M growth pattern, but UMDH is reporting a small increase in memory use!!! Very small being the operative word there.
The first part really blows my mind. What would cause UMDH to show a decrease in heap use but perfmon show a rather large increase in allocated memory use by the same process??
I considered thread stacks, but the thread stack count actually goes down. What else might go into "private bytes"?