MetricKit框架详细解析(三) —— Reducing Your App's Memory Use(一)

版本记录

版本号 时间
V1.0 2021.05.12 星期三

前言

MetricKit由iOS13系统进引入,用来汇总和分析有关异常和崩溃诊断以及电源和性能指标的每个设备的报告。下面我们就一起来看下这个框架。感兴趣的可以看下面几篇文章。
1. MetricKit框架详细解析(一) —— 基本概览(一)
2. MetricKit框架详细解析(二) —— Improving Your App's Performance(一)

Overview

通过分析内存使用指标并进行更改以最大程度地提高内存效率,从而提高您应用的性能。

设备上的内存(RAM)是由应用程序,操作系统进程和内核共享的有限资源。 iOS具有满足各种内存需求的技术,但是这些技术是以速度和响应速度为代价的。例如,当应用程序在后台运行时,iOS可能会将内存密集型应用程序转移到固态存储中。然后,当返回到前台或尝试运行后台任务时,该应用程序会导致延迟。

如果应用程序占用的内存过多,iOS会向其发送警告。您会以崩溃报告的形式收到有关此类警告的通知。该报告具有EXC_RESOURCE异常类型和MEMORY子类型,表明该应用程序已接近其内存限制。这并不意味着iOS已经终止了该应用程序,仅表示它已检测到内存使用问题。触发异常的内存限制取决于设备,一旦应用程序超出此限制,iOS就会终止该限制。如果该应用在前台中终止,则用户会看到它消失。下次用户打开该应用程序时,它将从头开始启动,所需时间比从后台恢复所需的时间更长。

由于设备在应用程序和iOS进程之间共享内存,因此一个应用程序使用过多的内存可能会损害整个设备的用户体验。限制应用程序使用的内存量可以使用户受益,即使他们正在使用其他应用程序也是如此。


Understand Memory-Use Metrics

Xcode OrganizerMetricKit分别提供了两个有关应用程序内存使用情况的指标。第一个指标是峰值内存使用量(peak memory use),这是在任何采样中观察到的最高内存使用量。 iOS通过全天定期采样应用程序的内存使用量来收集此指标。第二个指标是在暂停状态下观察到的内存使用情况,是在应用进入后台时测量的。

iOS将内存使用量衡量为使用中的内存页数乘以页面大小(通常为16 KB)。如果iOS必须分配一个新页来存储该字节,则将一个字节写入分配的内存可以将内存使用量增加16 KB

应用程序的可执行文件或链接的库和框架中定义的数据结构有助于内存使用指标。 应用在runtime分配的内存最初并不会影响该指标。 这样的内存是“干净的”,iOS不需要专用的物理RAM来存储它。 当应用程序写入分配的内存时,它将变为“ dirty”,并且iOS专用于RAM来存储其内容,如下图所示。 Dirty memory贡献了内存使用的指标。


View Data on Memory Use

Xcode Organizer窗口的Memory窗格中或使用MetricKit查看应用程序的内存使用情况。

Memory窗格在顶部图形中显示有关峰值内存的信息,在底部图形中显示处于暂停状态的内存的信息。 使用右上角的两个菜单,按设备类型和使用的典型内存(第50个百分位数)或使用的顶部内存(第90个百分位数)过滤信息,以查找可能的问题区域。 通过单击图表中所需的release版上的栏,将当前release版与先前release版的内存使用情况进行比较。


Topics

1. Tasks

  • Gathering Information About Memory Use
  • Making Changes to Reduce Memory Use
  • Preventing Memory-Use Regressions
  • Responding to Low-Memory Warnings

See Also

1. Related Documentation

  • Identifying High-Memory Use with Jetsam Event Reports

后记

本篇主要讲述了Reducing Your App's Memory Use,感兴趣的给个赞或者关注~~~

你可能感兴趣的:(MetricKit框架详细解析(三) —— Reducing Your App's Memory Use(一))