Hi,
We’ve been using the Memory Map to hunt down memory fragmentation problems and to analyze how our game memory is layed out.
On this project we have some native memory regions (pools) with a size of 16Mb.
At first glance, those pools seem as good as empty in the memory map view. The dark green is Native Memory (Reserved).
Already here we can see that there are some black lines in our 16Mb pool section.
To the best of my knowledge, this could mean it’s Virtual Memory, as that’s black in the legend?
Anyway, we were baffled our memory regions were empty.
But if we look at the allocation list for this region, it turns out it’s not empty at all…
If you sum all this, you get 18944Kb of data. with the rounding happening for the MB display, it’s fair to say that we are completely using up our memory buffer.
So, where is the light green “Native Memory (Allocated)” then? Shouldn’t it be completely light green?
Let’s drill deeper and look at those black bars:
We now use rows of 32Kb to try and see what those black bars are.
It turns out, those black bars seem to be my allocated memory.
Everything selected in between the black bars show nothing at all in the allocation list:
And then the last thing, the size of those black bars seem to be very wrong.
As you can see in the previous image, the little black bar is a size of 3.7Kb on a 34Kb row. It should be around 1/10th of the width of the bar.
But…
This small section is 34.1Kb and it takes up about the same amount of space as the 3.7Kb section, while instead it should span more than the entire line.
The fact that these visuals don’t seem to make a lot of sense, makes it very hard for us to actually drill down on our memory problems and we’re almost out of time to fix them.
@MartinTilo could you confirm if my analysis is correct?
If so, I’m willing to modify the package locally to try and have an accurate visual representation but any help would be appreciated.
Thank you in advance,
Pieter