当前位置:首页 > 经验 >

支付宝很卡怎么处理(支付宝很慢很卡怎么回事)

来源:原点资讯(www.yd166.com)时间:2022-11-02 11:31:58作者:YD166手机阅读>>

一、背景:

作为一名Android程序开发者,在日常的代码开发工作中可能不会过多关注自己业务对内存的使用是否合理,通常情况下Android系统的内存管理机制帮我们处理好了内存的分配和回收。然而在一些异常场景下不合理的内存占用不仅会使用户应用程序运行卡顿、ANR、黑屏,在极端情况下还会发生 OOM(Out of Memory)崩溃,极大影响用户体验造成用户流失。通常我们在对待线上的的Out of Memory的闪退都会被当做小概率事件没有被有效重视和系统分析,本文将结合支付宝线上OOM真实案例详细的介绍下常见OOM问题的根因分析和优化实践。

在支付宝应用架构的不断演进中用户支付场景已经是最基础的使用场景,随着小程序生态的引入森林庄园等复杂h5/小程序的使用比例不断增长,同时理财、本地生活等重度业务也运行在支付宝这艘航母上,并且在每年的大促活动像双11、618、新春五福活动上线后让本就不富裕的内存空间又雪上加霜,在2020年之前支付宝的内存问题一直未被重点关注,从一组数据可以看到在过去的19-20财年中,客户端OOM闪退率暴涨了近一倍,占整体客户端闪退的45%以上,内存水位则涨幅在300M左右,按照这个趋势20年底的OOM闪退率会涨幅50%。那到底是什么原因导致的支付宝OOM问题如此严重呢?这里先抛出几个问题:

  1. 线上低端机的OOM问题是否真的比高端机更严重呢?
  2. 线上的OOM真的全是由于Java内存泄漏导致的堆内存紧张导致的吗?
  3. 线上OOM有没有可能在App堆内存宽裕,设备物理内存也宽裕的情况下发生?
二、OOM问题根因分析2.1 OOM分类

通过以下数据我们可以看到在支付宝32位包的OOM闪退中9-11系统的占比远远超过6.x以下机器,并且在对闪退时内存统计中发现5.x以上机器闪退时端上整体内存值还有大量剩余,而虚拟内存空间几乎达到了2^32=4GB。

支付宝很卡怎么处理,支付宝很慢很卡怎么回事(1)

支付宝很卡怎么处理,支付宝很慢很卡怎么回事(2)

众所周知32位应用程序的虚拟内存寻址上限只有 2^32=4GB,无论高端机还是低端机只要虚拟内存寻址达到这个上限就会触发系统OOM闪退,通常在logcat日志中会看到"OutOfMemoryError: pthread_create (1040KB stack) failed: Try again", "libc abi: terminating with uncaught exception of type St9bad_alloc: std::bad_alloc","Could not mmap handle 0x67ae34d0 fd=652 (Out of memory)"等。因此按照不同的成因我们总结了OOM问题分类,只有对线上OOM问题清晰的认识和分类才能更好的感知问题变化和有针对性的治理

支付宝很卡怎么处理,支付宝很慢很卡怎么回事(3)

2.2 虚拟内存地址指标量化

下面将会从虚拟内存结构入手详细地讲解一下导致虚拟内存寻址空间不足的原因,从下图内存结构看出去系统占据的1G外剩下3GB内存都是如何分配?通常我们在写 Native 代码的时候,并不会直接调用内核的 API 去申请物理内存,而是使用 malloc 族的函数进行内存申请,这时候返回的指针是指向虚拟内存中的地址空间,之后在这部分地址空间真的被使用的时候,才会发生缺页中断触发真实的物理内存分配,所以通常是两层分配结构,用户态的代码申请的内存来自于内存分配器的二次分配,常见的内存分配器有 JeMalloc、TcMalloc、PtMalloc 等等。这里也解答了上面的问题,手机物理内存或javaheap内存只使用不到50%的情况下,虚拟内存可能已经打满同样会触发OOM闪退。

支付宝很卡怎么处理,支付宝很慢很卡怎么回事(4)

栏目热文

最近支付宝用着很卡是怎么回事(为什么支付宝刚点开很卡)

最近支付宝用着很卡是怎么回事(为什么支付宝刚点开很卡)

就在昨天,一则消息让黑马快“自闭”了。支付宝的网商银行将逐步停止支付宝余额转入功能。可能还有人不知道这跟自己有什么关系。...

2022-11-02 12:06:19查看全文 >>

支付宝用起来太卡怎么办(支付宝使用时非常卡是什么原因)

支付宝用起来太卡怎么办(支付宝使用时非常卡是什么原因)

有网友问,为什么打开支付宝比打开微信要慢?每回用支付宝付款总是觉得尴尬,太特么卡了。我真心觉得是安卓版的支付宝APP太卡...

2022-11-02 11:48:05查看全文 >>

支付宝变得很卡怎么回事(支付宝怎么突然变卡了)

支付宝变得很卡怎么回事(支付宝怎么突然变卡了)

说起测试员的日常,总是和BUG脱不了干系,用一句话总结就是,测试员不是在测BUG的路上,就是在去追着开发改BUG的路途中...

2022-11-02 12:01:00查看全文 >>

支付宝越来越卡是什么原因(支付宝怎么突然出现了鱼传卡管家)

支付宝越来越卡是什么原因(支付宝怎么突然出现了鱼传卡管家)

支付宝将暂停提现或转入二类账户!不管支付宝愿意不愿意,这一天还是来了!两天前,网商银行发布了一则公告:自 2022 年 ...

2022-11-02 11:59:11查看全文 >>

长安逸动ev460充电盒(长安逸动ev460充电操作步骤)

长安逸动ev460充电盒(长安逸动ev460充电操作步骤)

随着电动汽车的技术与产品逐渐成熟,市场可供选择的车型不断增多,即便是在非限牌、限号的城市,也有越来越多的消费者开始考虑新...

2022-11-02 12:11:18查看全文 >>

支付宝最近怎么老卡(为什么一进支付宝就非常的卡)

支付宝最近怎么老卡(为什么一进支付宝就非常的卡)

华为手机作为国产手机的佼佼者,想必大家都在用,可是时间一久就会察觉,为什么自己的华为手机总是比别人的卡?下面教你关闭这5...

2022-11-02 12:05:29查看全文 >>

支付宝太卡是什么原因(支付宝怎么越来越卡)

支付宝太卡是什么原因(支付宝怎么越来越卡)

手机卸载淘宝和支付宝后变得流畅许多,这种情在一些型号比较老的安卓手机上比较常见,如果把淘宝和支付宝卸载了,用起来确实就好...

2022-11-02 11:35:31查看全文 >>

支付宝打开很卡怎么办(支付宝很卡反应慢怎么办)

支付宝打开很卡怎么办(支付宝很卡反应慢怎么办)

我们在生活中经常使用支付宝进行收付款。转账等操作,但是每次一打开支付宝,屏幕中间的“活动推荐”横幅以及很多的栏目卡片广告...

2022-11-02 11:40:44查看全文 >>

支付宝更新后变卡了怎么办(支付宝很慢很卡怎么回事)

支付宝更新后变卡了怎么办(支付宝很慢很卡怎么回事)

今日,支付宝iOS版发布更新,版本号为v10.2.64,大小250MB,更新内容为“解决部分已知问题,优化多项细节,体验...

2022-11-02 11:55:29查看全文 >>

支付宝使用时非常卡是什么原因(为什么支付宝用起来很卡)

支付宝使用时非常卡是什么原因(为什么支付宝用起来很卡)

不知道大家有没有留意到,最近好像越来越多新机用上了18GB的内存。对,你没听错,比16GB还要多2GB。这2GB的优势已...

2022-11-02 11:53:25查看全文 >>

文档排行