MetricKit框架详细解析(五) —— Making Changes to Reduce Memory Use(一)

版本记录

版本号 时间
V1.0 2021.05.13 星期四

前言

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

Overview

通过解决过度使用的常见原因,减少应用程序对内存的使用。

将应用程序的内存使用量增长本地化为特定功能或操作后,就可以进行更改以减少内存使用量。下面介绍了过多使用内存的常见原因以及可以采取的减少其影响的措施。


Optimize Image Assets

大图像,尤其是在高色彩深度时,会占用大量内存。针对与应用程序捆绑在一起的资产进行优化,以使其显示大小。将其他来源(例如,网络服务或用户的图片库)加载的图像转换为适当的比例和颜色深度。对这些转换使用Image I/O可以最大程度地减少对内存的影响。 WWDC 2018 Session 416iOS Memory Deep Dive,提供有关选择适当的Image I/O转换的建议。


Reduce the Size of Core Data Transactions

Core Data在内存中将对NSManagedObject实例的更改存储在内存中,直到保存了与它们关联的NSManagedObjectContext为止,这时它会将更改写入父NSManagedObjectContextpersistent store中。在更改进入persistent store之前,它们一直驻留在内存中,因此您的应用在两次保存之间的时间越长,Core Data的工作量就越大。相反,您的应用保存得越频繁,它对设备固态驱动器的写入就越多,这会影响性能并增加驱动器的磨损。设计应用程序的持久性模型(persistence model),以在这两个资源约束之间取得平衡。


Discard Unused View Objects

锁定屏幕或后台运行应用程序时,用户不会查看您应用程序的视图。在此期间,无需将图像,视频,SceneKit scenes以及其他与视图相关的对象保留在内存中。当您的应用进入后台时释放与视图相关的内容,并在重新进入前台时再次准备视图。有关准备将应用程序供后台使用的信息,请参阅 Managing Your App's Life Cycle


Eliminate Memory Leaks

当分配的内存变得无法访问并且应用无法取消分配内存时,就会发生内存泄漏。允许分配的内存指针超出范围而不释放内存可能会导致内存泄漏。应用程序对象图中的循环引用也可能导致内存泄漏。当应用在retain cycle中删除对任何对象的引用时,强引用将保留在该cycle内,并且不会释放对象。

使用Leaks profiling template来检测内存泄漏。Instruments会定期扫描您的应用程序正在使用的内存,以报告已分配但无法访问的内存区域。 Leaks仪器显示泄漏内存的地址和大小,以及堆栈跟踪,显示负责分配内存的代码。


Remove References to Unused Objects

应用可能会累积已分配,可以访问但不使用的内存。这种未使用的内存可增加应用程序的内存使用量,而不会增加其功能,也不会出现在诸如Leaks仪器之类的泄漏检测工具中。

例如,社交媒体应用程序可能会从服务加载消息列表,并通过消息标识符将其存储在字典中。当用户滚动其时间轴时,该应用程序会将更多消息加载到词典中,以便在用户点击消息时可以快速显示更多信息。如果没有从该字典中清除较早消息的策略,则随着用户沿列表的滚动方向滚动,消息可能会无限增长。

确保您的应用仅保留对支持用户当前使用的功能所需的对象的引用。丢弃旧内容,或将其写入磁盘以供以后检索。例如,当用户滚动到这些消息时,社交媒体应用可以从其字典中丢弃消息。

后记

本篇主要讲述了Making Changes to Reduce Memory Use,感兴趣的给个赞或者关注~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容