内存调试
线下
使用 Instruments、MLeaksFinder 来进行内存泄露的定位,后期可能考虑把测试阶段的内存泄漏对象和泄漏位置上报到测试服务器进行数据分析,进而更精确定位问题
线上
继续统计 Abort 率,然后对于出现内存警告、Abort 的情况,及时上报 App 的内存走势,这个走势包括 App 使用的物理内存大小,以及当前设备的整体内存使用情况。当然不会持续收集内存,我们会在 ViewController 初始化和销毁的时候进行收集,这样基本可以把问题定位到 Controller 级别
系统内存分配
操作系统的内存主要分为 Used Memory、Free Memory,Used Memory 又可以分为Wired Memory、Active Memory、Inactive Memory,同时提到了一个Purgeable Memory
1.Free Memory
未使用的 RAM 容量,随时可以被应用分配使用
2.Wired Memory
用来存放内核代码和数据结构,它主要为内核服务,如负责网络、文件系统之类的;对于应用、framework、一些用户级别的软件是没办法分配此内存的。但是应用程序也会对 Wired Memory 的分配有所影响
3.Active Memory
活跃的内存,正在被使用或很短时间内被使用过
4. Inactive Memory
最近被使用过,但是目前处于不活跃状态
网友评论