为了账号安全,请及时绑定邮箱和手机立即绑定

iOS的乐器:为什么内存监视器不同意分配?

iOS的乐器:为什么内存监视器不同意分配?

胡说叔叔 2019-11-29 10:39:04
从这张屏幕截图可以看出,Allocations认为我的应用程序(Ongo)仅使用7.55 MB的内存,而Memory Monitor则为53.30。此外,可用系统内存与应用程序正在使用的内存量几乎没有关联。有谁知道为什么这两个工具之间会有如此大的分歧?另外,是否可以找到低系统内存的来源,或者如何防止其很快耗尽?我的应用程序似乎没有泄漏内存,但是以某种方式耗尽了系统资源。
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

对于那些在2012年之后看到此帖子的人:

真正加载到设备物理内存中的内存是VM Tracker Instrument中的常驻内存。

分配工具仅标记由malloc / [NSObject alloc]和某些框架缓冲区创建的内存,例如,解压缩的图像位图未包含在分配工具中,但它始终占用您的大部分内存。

请观看WWDC 2012 Session 242 iOS App性能:内存以从Apple获取信息。


查看完整回答
反对 回复 2019-11-29
?
暮色呼如

TA贡献1853条经验 获得超9个赞

我认为这是由于OpenGL ES的内存使用情况已从ObjectAlloc中隐藏,但已计入“内存监视器”中。例如,在这里的问题中,请参见zoul的测试,他在创建纹理时观察到ObjectAlloc略有上升,但随后该内存在传递给OpenGL ES时从该仪器中消失了。内存监视器仍会跟踪该纹理内存。

这应该包括UI元素(如图层和视图)的视觉外观,因为CALayers实际上是OpenGL ES纹理的包装。UI元素的实际2D图像表示似乎没有被ObjectAlloc跟踪,这导致ObjectAlloc中的总值较低。

ObjectAlloc仍然可以很好地跟踪分配的数量和类型,并且自从出现堆快照功能以来,它就变得更加有价值。您只想与Memory Monitor配合使用,以查看您真正的整体内存使用情况。


查看完整回答
反对 回复 2019-11-29
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

内存监视器将计算应用程序拥有的大部分或全部资源,包括在内核级别间接分配的资源。这包括Brad建议的AFAIK视频内存(纹理等),还包括内存映射文件以及可能比较大的内核结构(如套接字)。清单可能很长...


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 525 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信