I know that fragmentation typically occurs when an object collected by garbage collection is marked as a "free" block, but the object occupying the next address space is pinned. I can get a list of Free objects, but cannot seem to find out what is pinned next to it.
I dump the object, find its size, and then add its size to the original object address to get the next object, like this:
0:000> !do 0a2467c8 Free Object Size 438312(0x6b028) bytes
0:000> !do 0a2467c8+438312 Invalid object
I can never get the next, pinned object to show up. Its always invalid. What am I doing wrong here?
WinDbg does not always work out as planned. Check out Mark Russinovich’s latest utility.
ProcDump v1.0, a 1.0 worth every ounce of mention. http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
ProcDump is a command-line utility whose primary purpose is monitoring an application for CPU spikes and generating crash dumps during a spike that an administrator or developer can use to determine the cause of the spike. ProcDump also includes hung window monitoring (using the same definition of a window hang that Windows and Task Manager use) and unhandled exception monitoring. It also can serve as a general process dump utility that you can embed in other scripts.