This may not be a very good answer for you, but it is my justification for this problem in the research that I did.
The debug navigator shows the same things as the Activity Monitor tool. The application does not display the current allocated memory, displaying the current memory available to your application by the operating system.
Let's say I create a for loop to create a large number of objects in memory, but then I delete half of them because they do not match my search criteria (poor coding, I know, but hypothetically here). The OS will receive a request from your application for full memory to create all the objects, but after the cycle, when you check your allocations in the tools, only the stored objects are displayed, because the garbage collection took out the deleted ones. The OS may or may not know about garbage collection events, but it does not take up the memory that it just gave you. I'm not sure about the overhead of providing / getting available memory from your application, but I'm sure they take that into account. I noticed that if I leave my application long enough, the OS will take up some of the memory that I do not use.
Think of debugging memory information as the full application memory allocated by the OS. You cannot use all this, but the OS gave it to you anyway (for one reason or another). This number will increase depending on your requests / application usage. It will decrease due to memory alerts or inactivity that the OS thinks that it can safely recover memory from you. This will probably never correspond to the memory information allocated by the tools, because there is always temporary memory used in applications that need to be placed somewhere even for a short time.
Again, this is my conclusion, based on when I was interested in the same thing as you. Hope this helps a bit.
source share