android App的adj的大小及范围

在Android系统中,adj(OomAdj,即Out-of-Memory Adjustment)值是用来表示进程在系统内存管理中的相对重要性,决定系统在内存紧张时哪些进程应该被优先终止。以下是部分典型进程adj值的范围和含义,注意这些值随Android版本的不同可能会有所调整,但基本概念保持一致:

  1. FOREGROUND_APP_ADJ: 通常为0,表示前台应用程序,直接与用户交互。

  2. VISIBLE_APP_ADJ: 一般为100,表示可见但非前台的应用程序,如后台有Activity处于暂停状态。

    • 从Android P开始,这一区间细化为[100, 199],以区分不同程度的可见性或重要性。
  3. PERCEPTIBLE_APP_ADJ: 传统上为200,表示虽然不可见但用户可能感知到其存在,如后台有服务在播放音乐。

  4. SERVICE_ADJ: 一般高于200,表示后台服务进程,具体数值根据服务的重要性有所不同。

  5. CACHED_APP_MIN_ADJCACHED_APP_MAX_ADJ: 这个范围通常是从约900至1000,表示最近使用过的但当前不活跃的缓存进程,最容易被系统回收。

  6. UNKNOWN_ADJ: 通常为16,表示系统无法确定进程的状态,可能即将被缓存。

  7. CACHED_APP_MIN_ADJCACHED_APP_MAX_ADJ: 表示那些可以被系统随时回收以释放内存的缓存进程,这个范围内的值表示不同的缓存进程优先级。

值得注意的是,adj值的范围理论上可以从非常低的负数到正数(如-1000到1000),但实际上大多数常见的进程状态会落在上述提到的范围内。负值通常保留给系统核心进程和服务,这些是系统认为绝对不能杀死的进程。

这些值直接影响到系统如何通过Low Memory Killer (LMK)机制管理内存,当系统内存不足时,LMK会根据进程的adj值来决定终止哪些进程,以释放内存给更重要的进程使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值