| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> (一)LMK简介 -> 正文阅读 |
|
[移动开发](一)LMK简介 |
1、概述LMK (low meminfo killer) 即当系统可用内存太低时,系统会触发LMK,杀掉一些进程释放内存出来。android 会为进程分配优先级,优先级越低的应用,在内存不足时,会优先被杀。优先级与进程的类型和进程被调度的次序有关系。 2、优先级android 进程的优先级(从高到低)
而LMK 则是根据oom_adj?(Out of Memory Adjustment)来设置的,与android 的进程优先级有相似的地方,但又不完全相同
LMK根据当前可用内存情况来进行进程内存释放,总设计了6个级别,即上表中加粗的行,即LMK的杀进程的6档,如下:
当系统内存不足时,LMK也会从CACHED_APP_MAX_ADJ(第1档)开始杀进程,如果内存还不足,那么会杀CACHED_APP_MIN_ADJ(第2档),不断深入,以此类推。 3、adj那么系统是怎么判断内存不足的呢? 系统根据这6档设置相对应的内存值,每个系统不一样,可以自定义 android 9 及以下 要注意的是,这里的单位不是KB,而是page(1 page? = 4KB), 换算逻辑是(X / 1024 * 4)M
LMK 机制会为每个应用的内存进行打分,当内存不足时,会将分高的应用先kill,所以oom_score_adj (下见 cat /proc/pid/oom_score_adj)就是另一种形式上的adj,比adj 更加细分。 android 10 getprop?sys.lmk.minfree_levels 知道了当前阀值列表后,还需要查看当前应用对应的位置。 查看单个应用的优先级
以oom_score_adj?为准 查看当前系统应用优先级排列顺序 dumpsys activity o dumpsys activity|grep -A 30 oom_adj? (当前例子大概有20左右个进程排列,所以过滤显示30行,不是所有进程都会进入排列,dumpsys activity processes 也有相关信息,关键字 ?sorted by oom_adj) 也可以通过dumpsys meminfo 来查看排列,但是同一级内的优先级可能没有按顺序(实际测试时要注意) |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:39:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |