3 回答
TA贡献1850条经验 获得超11个赞
对于那些在2012年之后看到此帖子的人:
真正加载到设备物理内存中的内存是VM Tracker Instrument中的常驻内存。
分配工具仅标记由malloc / [NSObject alloc]和某些框架缓冲区创建的内存,例如,解压缩的图像位图未包含在分配工具中,但它始终占用您的大部分内存。
请观看WWDC 2012 Session 242 iOS App性能:内存以从Apple获取信息。
TA贡献1853条经验 获得超9个赞
我认为这是由于OpenGL ES的内存使用情况已从ObjectAlloc中隐藏,但已计入“内存监视器”中。例如,在这里的问题中,请参见zoul的测试,他在创建纹理时观察到ObjectAlloc略有上升,但随后该内存在传递给OpenGL ES时从该仪器中消失了。内存监视器仍会跟踪该纹理内存。
这应该包括UI元素(如图层和视图)的视觉外观,因为CALayers实际上是OpenGL ES纹理的包装。UI元素的实际2D图像表示似乎没有被ObjectAlloc跟踪,这导致ObjectAlloc中的总值较低。
ObjectAlloc仍然可以很好地跟踪分配的数量和类型,并且自从出现堆快照功能以来,它就变得更加有价值。您只想与Memory Monitor配合使用,以查看您真正的整体内存使用情况。
TA贡献1828条经验 获得超4个赞
内存监视器将计算应用程序拥有的大部分或全部资源,包括在内核级别间接分配的资源。这包括Brad建议的AFAIK视频内存(纹理等),还包括内存映射文件以及可能比较大的内核结构(如套接字)。清单可能很长...
- 3 回答
- 0 关注
- 525 浏览
添加回答
举报