Android的oom_adj, oom_score, oom_score_adj有什么区别
时间: 2024-06-01 10:07:28 浏览: 21
在Android系统中,oom_adj、oom_score和oom_score_adj是用来管理进程内存的参数。
oom_adj:是一个整数值,表示了进程在内存不足时的优先级。数值越小,表示进程被oom-killer杀死的概率越小。
oom_score:也是一个整数值,表示了进程所占用的内存大小和oom_adj的综合评分。数值越大,表示进程被oom-killer杀死的概率越大。
oom_score_adj:也是一个整数值,表示了进程在内存不足时的优先级。与oom_adj不同的是,oom_score_adj的取值范围为[-1000, 1000],而oom_adj的取值范围为[-17, 15]。oom_score_adj的计算公式是:oom_score_adj = oom_adj - oom_score。
因此,oom_score_adj的取值不仅与进程的oom_adj值有关,还与进程的oom_score值有关。如果进程的oom_score_adj值为负数,表示进程的优先级较高,oom-killer将会优先杀掉oom_score_adj值较大的进程。反之,如果进程的oom_score_adj值为正数,表示进程的优先级较低,oom-killer将会优先杀掉oom_score_adj值较小的进程。
相关问题
linux中oom_adj
oom_adj是Linux内核中的一个参数,用于控制进程被OOM(Out Of Memory)杀死的优先级。当系统内存不足时,内核会尝试杀死一些进程以释放内存。oom_adj值越低,进程被杀死的概率就越大,反之亦然。
oom_adj的取值范围是[-16,15],默认值为0。当进程的oom_adj值为-17时,表示该进程永远不会被OOM杀死。
通过修改/proc/[pid]/oom_adj文件,可以调整进程的oom_adj值。例如,以下命令将PID为123的进程的oom_adj值设置为5:
echo 5 > /proc/123/oom_adj
注意,oom_adj只是一个控制进程被杀死优先级的参数,并不能解决内存泄漏等问题。因此,在使用oom_adj调整进程优先级时,需要慎重考虑,并结合其他监控和优化手段来确保系统稳定性。
/proc/self/oom_score
/proc/self/oom_score是一个特殊的文件,它提供了当前进程的OOM(Out of Memory)分数。OOM分数是一个用于衡量进程在内存不足时被内核选择杀死的可能性的值。较高的分数表示进程更有可能被杀死,而较低的分数表示进程更不可能被杀死[^1]。
在Linux系统中,当系统内存不足时,内核会根据进程的OOM分数来选择哪个进程被杀死以释放内存。进程的OOM分数可以通过读取/proc/self/oom_score文件来获取。
请注意,/proc/self/oom_score文件只提供了当前进程的OOM分数。如果你想查看其他进程的OOM分数,可以使用/proc/[pid]/oom_score文件,其中[pid]是进程的ID。