记一次Android lowmemorykiller原因分析

MTK 平台

抓取MTK log

在sys_log中查看应用闪退时间点
以com.mediatek.camera应用为例

01-03 15:36:37.620533   921  1010 I WindowManager: Focus moving from Window{fb73616 u0 com.mediatek.camera/com.mediatek.camera.CameraLauncher} to null
01-03 15:36:37.624902   921  4017 W ActivityManager: Force removing ActivityRecord{f9cf064 u0 com.mediatek.camera/.CameraLauncher t21}: app died, no saved state

app died, no saved state 没有保存任何状态,非正常退出

在event_log中查看应用生命周期,时间点对得上

直接finish没有执行pause和destroy方法的 异常退出
在resume和finish之间寻找异常

01-03 15:36:37.072112   921  1001 I am_kill : [0,32641,com.mediatek.camera,0,depends on provider com.android.providers.media/.MediaProvider in dying proc android.process.media (adj 0)]

应用dead的原因是因为com.android.providers.media也dead了

在sys_log中发现 同一时间点

01-03 15:36:39.078460   921  1003 I ActivityManager: Start proc 2277:android.process.media/u0a5 for content provider com.android.providers.media/.MediaProvider

在kernel_log中

<6>[ 8900.773783]  (5)[99:kswapd0]lowmemorykiller: Killing 'd.process.media' (2277), adj 900, state(0)

可以推断是低内存的原因

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android内存机制在不同版本之间有着较大的演变,其中最主要的就是内存管理策略的变化。在早期的Android版本中,内存管理采用的是进程优先级的方式,即根据进程的重要性和消耗的资源量来确定内存使用的权重,但这种方式容易导致内存不足的情况,进而导致应用程序崩溃。 后来,Google在Android 2.0中引入了LowMemoryKiller机制,通过监控系统内存使用情况,当内存不足时自动清理不必要的进程,以释放内存资源。LowMemoryKiller机制的实现是通过kernel的oom-killer机制来实现的,当系统内存不足时,通过oom_adj值来判断哪些进程可以杀掉,以释放内存资源。在Android 2.x中,LowMemoryKiller机制主要依赖于进程oom_adj值的设置,以及进程的重要性和消耗的资源量来判断哪些进程可以被杀掉。 随着Android版本的不断升级,Google也对LowMemoryKiller机制进行了多次优化,主要包括: 1. Android 3.0中引入了memcg机制,通过将进程的内存资源划分为多个cgroup,实现对内存资源的精细化管理。 2. Android 4.0中引入了Lmkd机制,通过对进程的内存资源进行动态调整,以更加精准地释放内存资源。 3. Android 4.4中引入了Zram机制,通过将一部分物理内存作为压缩内存使用,提高内存使用效率。 4. Android 6.0中引入了Doze机制,通过限制应用程序的后台运行,以降低系统内存负载。 总的来说,Android的内存管理机制是不断演变和优化的过程,不断追求更加高效和精细化的内存管理方式,以保证系统的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值