Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
254 views
in Technique[技术] by (71.8m points)

iphone - instruments with iOS: Why does Memory Monitor disagree with Allocations?

As can been seen in this screen shot from instruments, Allocations thinks my application (Ongo) is only using 7.55 MBs of memory, while Memory Monitor says 53.30. Further more the free system memory has little to no correlation to the amount of memory that the app is using. Does anyone know why there is such a big disagreement between these two tools? Additionally is it possible to find the source of the low system memory or how to keep it from running out so quickly? My app doesn't appear to be leaking memory but somehow it's exhausting the system resources.

Thanks

Instruments Y U Lie?

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I believe this is due to the fact that memory usage from OpenGL ES is hidden from ObjectAlloc, but counted in Memory Monitor. For example, see zoul's tests in his question here, where he observes a slight uptick in ObjectAlloc on creation of a texture, but then that memory disappears from that instrument when passed off to OpenGL ES. Memory Monitor still tracks that texture memory.

This should include the visual aspect of UI elements, like layers and views, because CALayers are effectively wrappers for OpenGL ES textures. The actual 2D image representation of your UI elements don't appear to be tracked by ObjectAlloc, which leads to the lower total values in ObjectAlloc.

ObjectAlloc is still good for tracking numbers and types of allocations, and is even more valuable since the advent of the heapshot functionality. You just want to partner it with Memory Monitor to look at your true overall memory usage.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...