What's the right statistic for iOS Memory footprint. Live Bytes? Real Memory? Other?

后端 未结 3 1966
盖世英雄少女心
盖世英雄少女心 2021-01-30 14:34

I\'m definitely confused on this point.

I have an iPad application that shows \'Live Bytes\' usage of 6-12mb in the object allocation instrument. If I pull up the memory

3条回答
  •  生来不讨喜
    2021-01-30 14:51

    Those are simply two different metrics for measuring memory use. Which one is the "right" one depends on what question you're trying to answer.

    In a nutshell, the difference between "live bytes" and "real memory" is the difference between the amount of memory currently used for stuff that your app has created and the total amount of physical memory currently attributed to your app. There are at least two reasons that those are different:

    • code: Your app's code has to be loaded into memory, of course, and the virtual memory system surely attributes that to your app even though it's not memory that your app allocated.

    • memory pools: Most allocators work by maintaining one or more pools of memory from which they can carve off pieces for individual objects or allocated memory blocks. Most implementations of malloc work that way, and I expect that the object allocator does too. These pools aren't automatically resized downward when an object is deallocated -- the memory is just marked 'free' in the pool, but the whole pool will still be attributed to your app.

    There may be other ways that memory is attributed to your app without being directly allocated by your code, too.

    So, what are you trying to learn about your application? If you're trying to figure out why your app crashed due to low memory, look at both "live bytes" (to see what your app is using now) and "real memory" (to see how much memory the VM system says your app is using). If you're trying to improve your app's memory performance, looking at "live bytes" or "live objects" is more likely to help, since that's the memory that you can do something about.

提交回复
热议问题