首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 进程保活】oom_adj 值 ( oom_adj 值对应的进程优先级 | oom_adj 值动态改变 | 进程保活优化方向 )

文章目录 一、oom_adj 值对应的进程优先级 二、oom_adj 值动态改变 1、正常运行时的 oom_adj 值 2、按下 Home 键后的 oom_adj 值 3、按下回退键后的 oom_adj...值 二、进程保活优化方向 一、oom_adj 值对应的进程优先级 ---- oom_adj 值对应的进程优先级 : 优先级从上到下越来越高 , 最下面的优先级最高 , 最上面的优先级最低 ; UNKNOWN_ADJ...= 16 : 缓存进程 ; CACHED_APP_MAX_ADJ = 15 : 不可见进程的 oom_adj 最大值 ; CACHED_APP_MIN_ADJ = 9 : 不可见进程的 oom_adj...值动态改变 ---- 1、正常运行时的 oom_adj 值 一个程序的 oom_adj 值是不断动态改变的 , 当程序处于前台时 , 该前台进程的 oom_adj 的值为 0 , 运行程序 , 在...的 oom_adj 值为 12 , 不可见进程范围是 9 ~ 15 , 此时的状态是不可见状态 ; 3、按下回退键后的 oom_adj 值 如果是按下回退键退出界面 , 此时查询该

1.4K40

【Android 进程保活】oom_adj 值 ( 简介 | 查询进程 PID | 根据进程 PID 查询 oom_adj 值 )

文章目录 一、oom_adj 值简介 二、查询进程号 PID 三、查询进程对应的 oom_adj 值 一、oom_adj 值简介 ---- oom_adj 值是 Linux 内核为每个进程分配的 , 该值可以反映进程的优先级...; 在内存不足 , 要杀进程 , 回收内存时 , 会根据该 oom_adj 值决定是否回收该进程 ; oom_adj 值越大 , 对应的进程优先级越低 ; 二、查询进程号 PID ---- 获取进程号...值 ---- 获取进程号之后 , 执行如下命令 , 即可查询进程号对应进程的 oom_adj 值 ; 首先进入 Android 设备 adb shell 命令行 , adb shell 然后获取 root...权限 , su 最后查询进程号对应进程的 oom_adj 值 ; cat /proc/11694/oom_adj 最终查询的该进程的 oom_adj 值为 0 , 说明该进程当前处于前台 , 是前台进程...; 查下企鹅的三个进程的 oom_adj 值 : u0_a295 12420 725 4532232 92244 0 0 S com.tencent.mm

5K30
您找到你想要的搜索结果了吗?
是的
没有找到

软件性能测试(连载9)

内存 1)内核空间、用户空间 Linux内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。...图3-24 Linux内存空间 2)内核映射 Linux不会直接访问物理内存地址,而是访问虚拟地址。内存映射,就是将虚拟内存地址映射到物理内存地址。...Linux的内存回收一般分为以下三种方式。 •使用LRU(Least Recently Used)回收最近最少使用的缓存。...也可以通过oom_adj来调整oom_score。oom_adj的范围是[-17, 15],数值越大,表示进程越容易被OOM杀死;数值越小,表示进程越不容易被OOM杀死,其中-17表示禁止OOM。...oom_adj位于/proc/$(pidof sshd)/oom_adj,可以通过 #echo -16 > /proc/$(pidof sshd)/oom_adj 来设置。

91840

linux OOM killer分析

基本概念 Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉...我们先来看一下kernel提供给用户态的/proc下的一些参数: /proc/[pid]/oom_adj ,该pid进程被oom killer杀掉的权重,介于 [-17,15]之间,越高的权重,意味着更可能被.../proc/[pid]/oom_score,当前该pid进程的被kill的分数,越高的分数意味着越可能被kill,这个数值是根据oom_adj运算后的结果,是oom_killer的主要参考。...Apr 18 16:56:18 v125000100.bja kernel: : [22254386.758297] [ pid ] uid tgid total_vm rss cpu oom_adj...831] 99 831 1032 21 0 0 0 multilog 所以,如果想修改被oom killer选中的概率,禁止或者给oom_adj

93920

Linux OOM机制分析

OOM分析 oom_killer(out of memory killer)是Linux内核的一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存...或oom_adj中任一个进行设置,内核中都会进行两者之间的相互转换,转换关系如下: 2.6(Centos6) oom_score_adj=(oom_adj*1000)/17 oom_adj= (oom_score_adj...*15)/1000 当设置oom_adj=-16时,oom_score_adj自动调整为-941 当设置oom_score_adj=-950时,oom_adj自动调整为-14 3.10(Centos7...) oom_score_adj= (oom_adj*1000)/17 oom_adj=(oom_score_adj*17)/1000 当设置oom_adj=-16时,oom_score_adj自动调整为...(oom_adj)设置, */ if (atomic_read(&p->mm->oom_disable_count)) { task_unlock(p); return 0;

7.9K93

linux out of memory分析(OOM)

原文:http://blog.csdn.net/guomsh/article/details/6536915 Linux有一个特性:OOM Killer,一个保护机制,用于避免在内存不足的时候不至于出现严重问题...在32位CPU下寻址范围是有限的,Linux内核定义了下面三个区域: # DMA: 0x00000000 - 0x00999999 (0 - 16 MB) # LowMem: 0x01000000...is disabled"     5、或者不把oom-killer关掉,只针对单一进程处理,把某个进程保护起来,此时,我们可以使用如下命令:        echo -17 > /proc/[pid]/oom_adj...       /proc/[pid]/oom_adjoom_adj的取值范围是-17~15,当该值为-17时,系统将不会杀死指定pid的进程,而-16~15则会使得进程的/proc/[pid]/oom_adj...p=430 http://www.dbanotes.net/database/linux_outofmemory_oom_killer.html http://www.sealinger.com/archives

8.5K20

性能测试必备知识(10)- Linux 是怎么管理内存的?

虚拟地址空间 为了解决上面的问题,Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的 这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存 内部 虚拟地址空间的内部又被分为内核空间和用户空间两部分...页表实际上存储在 CPU 的内存管理单元 MMU 中 正常情况下,处理器就可以直接通过硬件,找出要访问的内存 在页表的映射下,进程就可以通过虚拟地址来访问物理内存了 灵魂拷问 么具体到 一个 Linux...,从而调整进程的 oom_score oom_adj 的范围是 [-17, 15] ,数值越大,表示进程越容易被 OOM 杀死;数值越小,表示进程越不容易被 OOM 杀死,其中 -17 表示禁止...OOM 调整 oom_score 的栗子 把 sshd 进程的 oom_adj 调小为 -16,这样, sshd 进程就 不容易被 OOM 杀死 echo -16 > /proc/$(pidof sshd...)/oom_adj 如何查看内存使用情况 free 显示的是整个系统的内存使用情况 https://www.cnblogs.com/poloyy/p/13503203.html top 可以查看系统内存使用情况

1.9K30

Android 使用心得 ❄️| 使用adb命令查看某个应用的 进程优先级!

:adb shell ps|findstr baidu 在手机上筛选某个进程:adb shell ps baidu 或者 adb shell ps|findstr -i baidu android或者linux...根据进程的PID查看进程优先级 在第一步中我们找到了想要查找的进程的PID 那我们就根据这PID来查看他的优先级 查看某个进程的优先级命令:先进行adb shell,然后cat proc/对应的进程PID/oom_adj...比如我这里的PID是27652,那我的操作如下:cat proc/27652/oom_adj 这个数字11就是我这个进程当前的优先级 但是这里要注意,如果这个进程当前是在前台正在运行,那么他的这个数值会显示为...0 oom_adj 解释 那这样就可以查到我们所需要的进程优先级了!

1.4K20

【Android 逆向】Android 系统文件分析 ( procpid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )

文章目录 一、/proc/pid_num 进程号对应进程信息文件 1、进程查询 2、进程目录 3、进程启动命令 / 包名 4、oom_adj 进程优先级 5、maps 进程内存使用概况 6、smaps...查看 /proc/1/cmdline 文件内容 , 1 进程号对应的进程的 cmdline 文件中 , 显示的是 /init 可执行文件 , 这是个应用程序 , 这是 Android 系统启动时 , Linux...初始化 Android 环境时 , 调用到的进程 ; walleye:/proc/1 # cat /proc/1/cmdline /init 4、oom_adj 进程优先级 查看 /proc/31359.../oom_adj 文件内容 : 16 , 这是进程的优先级 , 在之前进行进程保活时 , 分析过该参数 ; oom_adj 值越小 , 进程优先级越高 , 越不容易被杀死 ; walleye:/proc.../31359 # cat oom_adj 16 查看 /proc/31359/oom_adj 文件内容 : 该文件展示进程所使用到的内存 ; 5、maps 进程内存使用概况 查看 /proc/1/maps

1.1K10

深入了解Linux OOM Killer:一次可怕的内核事件

之所以会发生这种情况,是因为Linux内核在给某个进程分配内存时,会比进程申请的内存多分配一些....1)Linux下每个进程都有个OOM权重,在/proc//oom_adj里面,取值是-17到+15,取值越高,越容易被干掉; 2)linux内核会通过特定的算法给每个进程计算一个分数来决定杀哪个进程.../oom_score;(正比例关系,oom_adj越大,oom_score分数越高,越容易被干掉) 当物理内存和交换空间都被用完时,如果还有进程来申请内存,内核将触发OOM killer,其行为如下:...计算方式大概如下: 如果/proc//oom_adj的值为正数,那么分数将会被乘以2的n次方,这里n是文件里面的值 如果/proc//oom_adj的值为负数,那么分数将会被除以2的...算法 Linux中内存都是以页的形式管理的,因此无论是怎么申请内存,都会调用alloc_page()函数,最终调用到函数out_of_memory(),触发OOM机制。

93220

APP的生死之道

Low Memory Killer(LMK) Low Memory Killer是基于Linux的Out Of Memory Killer(OOMKiller)优化的一种内存回收机制,相对与OOMKiller...Linux的内存分配则更加的积极:它假设应用申请了内存空间后并不会立即去使用它,所以允许超剩余内存的申请,当应用真的需要使用它的时候,操作系统可能已经通过回收了其他应用的内存空间而变得有能力去满足这个应用的需求...2、oom_adj值 每个应用进程的adj值是怎么计算和存储的呢?...我们看下oom_adj值和oom_score_adj值。...LMK会从最大的oom_adj的值的进程开始kill,释放他们的内存,直到内存的阈值超过了24576;如果有oom_adj的值相等的进程,则优先kill占用内存大的进程。

1.2K31
领券