What is "Performance tool data" reported by Allocations instrument?

Hiya,


I'm having difficulty resolving the memory overhead of my iOS application. Specifically, the "Activity Monitor" Instrument reports that my app is using 158 MB "Real Mem". Note that I am manually launching the app on device and viewing "All Processes".


When I run the app in the "Allocations" Instrument and take a VM snapshot it also reports the app is using 158 MB in the "Dirty Size" column of the VM Summary, so both tools seem to report consistent values.


What I do not understand though is that there is 32 MB allocation for "Performance tool data" listed in the "Allocations" instrument, which best I can tell is not coming from my code.


Which leads me to the following questions:


1. What is "Performance tool data"? Is this a special block of memory allocated by the "Allocations" instrument which it uses for tracking allocations?


2. I would think that my app would be using 32 MB less memory when just launching on the device, as it would not need to allocate additional memory for tracking allocations.


3. When I run a simple 'HelloWorld' app, I do indeed see that the "Activity Monitor" reports 32 MB less then the "Allocations" instrument in this case. Any thoughts on why I don't see this same discrepancy reported in my actual app as well?


Note that I am seeing the same issue in both Debug/Release builds.


Basically I am just trying to confirm that I have not introduced this 32 MB overhead in my app inadvertently.



Any info appreciated.

Replies

The "Performance tool data" region is indeed inserted there by the profiling tools. So rest assured you did not introduce this with a code change.

The amount of dirty memory that region consumes can depend on a number of factors (did you launch in Xcode or Instruments, Debug or Release, did you attach to a running process instead, etc...) So it's possible your initial comparison wasn't exactly "apples to apples", and you might be chasing down a ghost. I would focus on what Allocations and VM Tracker are telling you, and you can safely discount the "Performance tool data" region as it is not under your control.

Thanks for your reply. Good to know the 32 MB Performance Tools data allocation does not count against my app when running outside of the allocations tool.


To clarify, I am running a debug build, outside of XCode. So if I launch my app on the device (via tapping on app icon), and connect the Activity Monitor to monitor 'All Processes', can I expect that the reported 'Real Mem' will be in the same ballpark as the VM Summary 'Dirty Size' total (minus the the 32 MB "Performance Tools data")?


Am just trying to get a sanity check to find some correspondence between the different profiling tools, so that I am comparing 'apples-to-apples'.