前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“定位”那些事儿—sigkill定位爆内存问题

“定位”那些事儿—sigkill定位爆内存问题

原创
作者头像
硬骨见小鹿
修改2020-05-21 14:34:21
7.5K0
修改2020-05-21 14:34:21
举报

导语:定位爆内存crash原因—iOS App性能中影响各位开发友人发量的重要问题,我们通过对QAPM上报的一例sigkill有效个例的分析,为大家提供一些思路。


问题背景

在iOS App中,爆内存导致杀进程,一直是业界的难以定位的问题。App使用的内存超出设备限制,系统将强制挂起App,挂起所有后台操作、线程,直到再次点击App之后才会继续运行,而强制挂起时系统不会产生Crashlog,也无法记录Flurry。

于是就出现这种情况:爆内存导致频繁闪退,且无法获得堆栈信息进行有效定位。

通过iOS官方的工具Instruments->Allocations里的Heapshot功能来查找原因,不一定能定位到问题堆栈,还相当耗时。而QAPM-SIGKILL就能做到监控app爆内存场景,并且及时定位到问题关键堆栈信息,还能实时上报数据。

通过以下相册管家(ios)案例来说明。

案例起源

相册管家(ios)在发版前进行了灰度测试,且有开启了SIGKILL监控功能,有添加白名单进行监控。监控到一例SIGKILL问题。

案例分析

进行一轮测试后,发现有白名单用户的崩溃个例的SIGKILL上报,且已经有特征场景显示出来。

进入到相应堆栈的【详情】,分析具体SIGKILL场景堆栈。

开发同学根据上报的堆栈信息结合代码分析,马上定位到了问题原因:对尺寸过大的图片进行解码时会导致爆内存。

解决思路

根据反馈,了解到目前解决此场景爆内存的思路是:根据不同的机型内存,设定一个内存的边界值,没超过的话直接解码图片,超过则对原图片进行缩放以减少占用内存空间,并且解码图片时会把原始的图片数据分成多个tail进行解码。

感谢相册管家iOS项目同学的支持~

QAPM在不断成长中,欢迎大家多提意见,分享想法!

如果你们的iOS应用也在受到内存问题困扰或者你也对iOS内存监控技术感兴趣,那么来了解下我们的QAPM吧!

如有兴趣或任何疑问,请联系在线客服:QAPM

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题背景
  • 案例起源
  • 案例分析
  • 解决思路
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com