内存泄漏番外特别篇之为什么我不建议你直接使用UIImage传值?从一个诡异的相册九图连读崩溃bug谈起iOS122移动混合开发研究院

首先,我的第一反应是肯定是他的手机太烫了吧,重启下,就好了.恩,肯定是这样.发布作品的逻辑,好几个版本都没动过.模拟器,手机,我自己试了下,都是OK的.也没有其他用户反馈过,fabric也看不到任何log.对,手机太烫了.我稍后,再联系他,肯定就OK了.

稍后,再直接联系BOSS,竟然还是会Crash,他甚至给我录屏演示了一下,真的每次都会crash.而且我还无法复现.而且BOSS手机iPhone6plus,自身内存不足的原因非常非常小.

形势,瞬间变得很紧张,这个问题的优先级瞬间被提到了最高!再次尝试了各种可能的情况.图片大小它是9张1.5M的图,我就用9张3M的图,也是OK的呀!选取时,顺序有问题我试着按照录屏中演示的顺序去选取图片,也是OK的.一股深深地无力感!竟然连复现都无法复现不了!

最后的最后,说是会拿手机给我测试.不过,最后BOSS的手机,还是没有拿到,只是拿到了开篇那张画风诡异的图片.没错,就是它,连续选取9张,就Crash了.

我不觉得,分析Bug真的有什么思路可言.Bug产生的原因,是有许多可能性的,可能行验证的顺序,方式和深度很大程度上取决于coder本身已有的经验,天赋,甚至还有些许的运气!我能描述的,可能仅仅是我处理这个问题的一个相对的完整脑洞过程.部分分析过程间,明显不是有逻辑性的.越是诡异的问题,越是不能循规蹈矩,要时刻尝试去问自己最可能地问题是什么,而不是沿着一条路,一条道走到黑.

Coder有些许高傲,有时候是有利于自己更冷静地处理问题的.稍微不自信点的童鞋,可能就会怀疑:我代码是不是有什么特殊的临界判断没有加不行,我得去看看.一行一行,看代码,从天黑到天亮,从期待到绝望...其实,稍微有一些对比实验常识的人,都很容易猜到:两种情况,唯一的变量是图片素材本身,那最可能的原因肯定是图片本身的问题.一种高大上的说法,这某种程度上,也暗合了所谓的"贪心算法".每次,都只从最可能的原因入手,管他谁是谁,我的代码就算有问题,那触发这个问题的可能性,也是远小于图片素材本身的.---多么朴素的真理呀!

这个问题,在真机上,并不好确定,因为连续读取9张高像素图时,内存是瞬间飙升的,你几乎没有机会去观察内存占用,给人一种因为某种逻辑判断而导致的Crash的错觉.如果换做模拟器,会很容易看到,这个内存占用,是飙升到G单位的.当然,我也没那么睿智,我是单个N个断点,最终确认了Crash的代码的准确位置.一个for循环,每次step1,这下很明显地看到内存,几乎是100M/张的速度在飙升,而图片本身的大小只有1.5M/张.此处我想说的是,打断点也是有技巧的,最后没有办法的办法也是讲究办法的.可是试着注释掉可能的引起的代码,然后逐步放开注释,这要观察,会比直接打断点快些.--意会!

是的,我运气,似乎总是很好~

答案原文是:

Ifoundthatifiswitchfrom-requestImageForAsset:targetSize:contentMode:options:resultHandler:to-requestImageDataForAsset:options:resultHandler:iwillreceivetheimagewiththesamedimension{5376,2688}butthesizeinbyteismuchsmaller.Sothememoryissueissolved.hopethishelp!!(note:[UIImageimageWithData:imageData]usethistoconvertNSDatatoUIImage)简单说,就是用-requestImageDataForAsset:options:resultHandler:替换requestImageForAsset:targetSize:contentMode:options:resultHandler:就可以了,前者是直接返回二进制数据,不渲染.

但是,这里有一个可能不是问题的问题,这个方法调用是位于一个名为第三方库TZImagePickerController内,我方便直接改吗我是直接给改了.此处,将来必成大患,以后再用到,肯定还会有相同问题,还不如直接把原来的实现直接替换掉.当然,这也是成本最小的方法.这个库,本身,已经在App内,深度定制和重写了,如果一些成熟的第三方库,这么做,最好先备份或备注下.

为了和原来的Api接口调用兼容,用imageWithData:将NSData转换为UIImage传出,同时扩展方法,使支持同时传出UIImage和原始的NSData对象.传出NSData对象的原因是,是因为高像素图片,会引起一些列的问题,故事到此远远没有结束,详见衍生问题部分.

还是来段代码感受下吧,一码剩千言:

未来遇到UIImage内存问题的童鞋,至少能从此处获取的一个至少验证可用的解决策略.

回到问题本身,用一句概括就是:永远不要直接传递UIImage对象.在需要传递UIImage的场景中,请使用图片名或者NSData二进制对代替.

故事,真的还没有完结.从相册顺利读取这张诡异的高像素图后,我发现我没有办法将它上传,也无法在轮播图上,连续显示.简要概括如下.

图片选取后,并不是立即上传的,为了能实现"重发"功能,需要在缓存目录保留副本.原来是将UIImage转换为NSData写入.在此过程中,又一次引起了巨额的内存开销.解决方法,就是直接缓存原始获取的NSData的对象,而不要NSData-->UIImage-->NSData.

此处对应的是一个本地大图预览功能,实现是在前一个页面把九张本地图的UIImage传递给轮播预览组件.此处的坑是:把一个存放在数组中的UIImage对象传递给UIImageView的image属性,当UIImageView加载到父视图时,会引起巨额的内存占用.原因初步猜测是UIImage对象显示到UIImageView会有一个特殊的耗费内存的操作,如果原始的UIImage对象一直存在,这一块内存那就无法释放.这一步,困扰了我很久很久,好几个小时!我真没想到,一个UIImage对象,竟然会二次引起高内存占用.最终的解决方法,就是在前一个页面传递NSData数组,在赋值处,再使用imageWithData:转换为UIImage.这样,内存使用基本没什么起伏.

或许,我应该研究下一个UIImage对象,竟然会二次引起高内存占用的原因.欢迎大神完善!

THE END
1.boss直聘里,兼职线上录题靠谱吗?我在搞线上录题审核,一块钱一条视频,看给不给发钱 赞 回应 间歇性发作 2023-09-11 23:31:49 北京 单价低,要求高,审核会以各种理由不通过退回重新做,算下来时薪很低,而且需要自备写字板。不建议 赞(16) 回应 RioLiv (dentists on trampolines;) 2023-09-12 05:26:06 河北 看平台了,是正https://m.douban.com/group/topic/294766020/
2.录题的兼职靠谱吗boss直聘吧boss直聘吧 关注:125,952贴子:829,644 看贴 图片 吧主推荐 游戏 2回复贴,共1页 <返回boss直聘吧求助 录题的兼职靠谱吗 只看楼主收藏回复 九帝1 中级粉丝 2 点击展开,查看完整图片 送TA礼物 来自Android客户端1楼2023-11-19 00:42回复 https://tieba.baidu.com/p/8729034159
3.《原来线上兼职是真的可以赚钱!》然后,你就可以海投了,真的,广撒网,中标机率就会大一些,然后,看到合适的实习或者兼职的职位,大胆些,主动去和招聘人去聊,把自己和岗位对口的主要信息发给招聘人(虽然有简历,但是先发消息会更直接,如果再感兴趣会看你的简历或者你再发简历给招聘人也ok的,这里推荐大家看小红书:如何在boss直聘得到回复等等等等,但注https://zhuanlan.zhihu.com/p/541620294
4.www.hbdfcpa.com/xxxmok64759.shtml据普益财富统计,上周(11月20日至11月26日)28家商业银行共发行了234款个人理财产品。保本类产品市场 占比上升到60.26%;而非保本类产品市场占比由上周的46.51%下降至39.74%,在上上周 (11月13日至11月19日),22家商业银行共发行了172款个人理财产品。(许婧)http://www.hbdfcpa.com/xxxmok64759.shtml
5.www.ggl999.com/mokaka24522.html6月25日电 据台湾《中国时报》报道,因应2014年台湾县市“七合一”选举,台行政机构将增设云嘉南办公室,执行长人选也出现特殊安排。高层规划办公室将于7月1日成立,先由行政机构副秘书长陈士魁暂兼执行长,待年底青少年辅导部门解编,再交棒给届时卸任的“主委”陈以真。党政人士分析,此布局将助陈以真持续深耕基层,并争http://www.ggl999.com/mokaka24522.html
6.请问现在招聘的线上录题老师兼职靠谱吗?有做的吗?最近看智联招聘和BOSS直聘有很很多教育咨询公司发布的,“线上录题老师,不坐班,时间自由”,工作形式:以录屏的形式把单题目进行讲解,工作时间自由,时查看全文 相关企业信息 公司名称:北京网聘信息技术有限公司 法人代表:郭盛 注册资本:300万美元 成立时间:2000-05-29 公司类型:有限责任公司(港澳台投资、非独资https://mnews.tianyancha.com/ll_w6taxh3ndf.html
7.www.qingyi.cn/mokoi12哈登15分5篮板6助攻2抢断9失误,祖巴茨14分13个篮板4次助攻,鲍威尔16分4次助攻,凯文-波特16分,海兰德13分。/阅读下一篇/返回网易首页下载网易新闻客户端 泰国气象厅预计南部地区未来几日仍将有暴雨。(记者 黎藜 常天童) 北京4月10日电 中国国务院新闻办公室10日发表《2010年美国的人权纪录》。人权纪录指出,美http://www.qingyi.cn/mokoi12_15/872623.html
8.www.sthj99.com/mokaka92319.html他补充道,俄罗斯几乎每天都与叙利亚政府沟通,“力求叙政府最大限度有效和快速的应对科菲?安南的建议”,但我们认为,我们的西方伙伴与阿拉伯国家将向叙利亚的武装团伙发出这种信号。-——。 从头“两支箭”的一鸣惊人到“第三支箭”的差强人意,“安倍经济学”的前景并不明朗。经验表明单靠政府支出和量化宽松是不能http://www.sthj99.com/mokaka92319.html
9.BOSS智联上这样的公司都是骗子爆料内幕他们公司大量招聘兼职人事、招聘专员、讲师! 讲师是干嘛的,筛选完了,统一起来给大家开销售创业课。里面还有托,抢着买的那种。 在这种情况下,很多人学生娃,都架不住压力买一份。然后入局,然后要么晋级为招聘专员,要么晋级为讲师,都是没底薪的。 招聘的一般在BOSS和智联、微信上不视频,不语音,怕你去了认出来,我https://maimai.cn/article/detail?fid=1839317638&efid=eHWfM7nCt4chu6R_cQdIKw
10.www.joylearning.com/newxr15540362/57710240.htm沫沫直播镜子反光录屏视频下载 74.43MB 557好评 欧美姑娘的美屄XXXxXxXX 激情草裙社区 中文字幕蜜臀 19.39MB 168好评 监狱风云第二季 侵犯希崎中文字幕在线电影 国产粗大 12.87MB 275好评 黄色AAA视频 夏目彩春无码破壊 福利第一导航小黄鸭 21.71MB 95好评 xxx无码 亚洲一区二区三区高清无码http://www.joylearning.com/newxr15540362/57710240.htm
11.www.zhilitong.net/moken59450.html据了解,除了三大古城的饮食文化特展外,本届美食展上,“台中果珍馔”、“筍鲜茶香南投纸美”、“健康饮食概念展”、“东海岸鲜味展”展出的美食预计也会相当诱人。此外,美食展上的两岸美食交流表演也令人期待。|。 两岸一家亲,奔跑向未来!12月8日,2024海峡两岸(昆山)马拉松在城西体育中心鸣枪开赛,16000名参赛者https://www.zhilitong.net/moken59450.html
12.老板抽油烟机质量怎么样好使吗?舞艺8录制的舞蹈微博录屏 61岁老太恋爱18岁小伙 14147在中国艺术史上的地位 乌鲁木齐totak二维码 KNINEBOX国漫斗破苍穹 ty66.com域名解析查询 女生如何奖励视频素材高清 情侣一百种插秧插画图片 热舞录制21的微博录屏 沈阳45岁这声音也没谁了 fi11.cnn研究所实验室直接进入不需下载 差差漫画网页登录页面弹窗 中国大叔http://www.ericsson365.com/index.php/share/YS0xMS0zMjk5NTUwMg.shtml
13.雾海寻龙25英雄冷龙峰明尊攻略现在削弱了终于有机会录明尊视角了,录屏已上传请放心食用(实在对不住忘记开BGM了又懒得后期加了看的时候自己开播放器听就当有BGM吧),1就不录了和普通一样的。 有很多玩家说老2自己拉不住仇之类的,请务必详细阅读BOSS应对攻略中雨轻红篇,内含正确高效起手建仇方法与录屏参考, https://www.jx3box.com/bps/80419
14.乐盈VI官方版【乐盈VI】支持:1088isp/1298bit系统类型:乐盈VI官网(2024综合APP)全新/版本IOS/安卓官方入口V18.14.68(注册,登录,官方网)官方入口是一款功能齐全、性能卓越的录屏软件,它以超清画质、灵活的录制设置、强大的编辑功能和稳定的性能,满足了用户多样化的录屏需求。无论是录制游戏、教学、会议还是直播,超清录屏http://www.xiantq.com/post/238007.html
15.wap.fsworld.cn/normal/3776.html说到裸眼3D技术,可能很多人已经不陌生,在一线城市的繁华商业街,就有很多利用裸眼3D技术制作成的巨幅广告屏。 可这种裸眼3D技术如果放在13年前,那绝对是技术领先的存在。 特别是把这种技术运用在手机上,更是牛叉般的存在。 那到底是哪个品牌的手机,在裸眼3D技术上有所突破呢?http://wap.fsworld.cn/normal/3776.html
16.安室透波本以私家侦探安室透的名义,接近小五郎同学伴场赖太的女友加门初音,获得其信任在宴会现场担任服务生[2]:File.793-794[9]:TV667(719);加门崩溃自杀后故意道出错误推理接近小五郎,事后兼职波洛咖啡厅服务员,并拜毛利侦探为师[2]:File.794-795[9]:TV667-668(719-720)。 安室套话问出小五郎电脑密码,在拯救http://www.conanpedia.com/zh-hans/%E5%AE%89%E5%AE%A4%E9%80%8F
17.「线上兼职文字编辑招聘信息」BOSS直聘为您提供2024年线上兼职文字编辑信息,BOSS直聘在线开聊约面试,及时反馈,让线上兼职文字编辑更便捷,找工作就上BOSS直聘!https://m.zhipin.com/zhaopin/64afc626525ac5001nNy3du9Eg~~/