Android系统为什么lmkd杀到adj 100就代表有低内存?

在Android系统中,lmkd(Low Memory Killer Daemon,低内存终止守护进程)负责监控系统的内存状态,并在内存压力较高时通过终止不必要的进程来释放内存,以维持系统的稳定运行。关于lmkd为何在杀到adj(OOM Adjustment)值为100的进程时代表系统处于低内存状态,可以从以下几个方面进行解释:

1. OOM Adjustment(OOM_ADJ或adj)值的意义

OOM Adjustment(OOM_ADJ或简称adj)值是Android系统用来评估进程优先级和重要性的一个关键参数。该值越小,表示进程越重要,越不应该被杀死;值越大,表示进程越不重要,越容易被杀死以释放内存。从Android 7.0开始,ADJ值采用100、200、300等更细致的划分,以更精确地管理进程优先级(在此之前的版本中,ADJ值采用1、2、3等较粗略的划分)。

2. adj 100的意义

在Android系统中,adj 100通常代表了一个具有特定重要性的进程类别。具体来说,adj 100可能对应于VISIBLE_APP_ADJ或类似级别的进程,这类进程虽然对用户可见,但并非处于最前台或最关键的状态。因此,当系统内存压力增大到一定程度时,这些adj值较高的进程可能会成为lmkd的清理目标。

3. lmkd的工作机制

lmkd会根据系统的内存状态和预设的策略(如基于adj值和内存使用量的阈值)来决定哪些进程需要被终止。当系统内存达到预设的低内存阈值时,lmkd会开始扫描并杀死那些adj值较高、内存占用较多的进程,以释放内存供更关键的进程使用。

4. 为什么杀到adj 100代表低内存

  • adj值的优先级:如前所述,adj值越大的进程越容易被杀死。因此,当lmkd开始杀死adj 100的进程时,说明系统内存已经紧张到需要牺牲一些对用户可见但非关键的进程来释放内存。
  • 内存压力的判断:lmkd会根据系统的内存使用情况和预设的阈值来判断是否处于低内存状态。一旦达到或超过这些阈值,lmkd就会开始执行清理操作。
  • 用户体验的保障:通过优先杀死adj值较高的进程,系统可以确保那些对用户更关键、更重要的进程(如前台应用、系统服务等)能够继续运行,从而保障用户体验。

综上所述,当lmkd开始杀死adj 100的进程时,这通常意味着系统已经处于低内存状态,并需要通过清理不必要的进程来释放内存。这一行为是Android系统内存管理机制的重要组成部分,旨在确保系统在内存资源有限的情况下仍能够稳定运行。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值