A类和B类Android服务的定义是什么?



在检查通过dumpsys meminfo oom进行OOM调整的总PSS使用情况时,我发现了">A服务"类别;B服务&;

你知道这两个类别的确切含义吗?

也许这与服务在LRU中的位置有关?

下面的代码是AMS用来管理进程的,您可以阅读它来了解更多。

https://android.googlesource.com/platform/frameworks/base/+/4 f868ed/服务/核心/java/com/android/server/am/ProcessList.java

简单来说,服务列表中大约1/3的进程是A服务,2/3的进程是B服务。在某些情况下,某些具有较大PSS的A业务将被视为B业务。

// The B list of SERVICE_ADJ -- these are the old and decrepit
// services that aren't as shiny and interesting as the ones in the A list.
static final int SERVICE_B_ADJ = 8;

if (adj == ProcessList.SERVICE_ADJ) {
if (doingAll) {
app.serviceb = mNewNumAServiceProcs > (mNumServiceProcs/3);
mNewNumServiceProcs++;
if (!app.serviceb) {
if (mLastMemoryLevel > ProcessStats.ADJ_MEM_FACTOR_NORMAL
&& app.lastPss >= mProcessList.getCachedRestoreThresholdKb()) {
app.serviceHighRam = true;
app.serviceb = true;
} else {
mNewNumAServiceProcs++;
}
} else {
app.serviceHighRam = false;
}
}
if (app.serviceb) {
adj = ProcessList.SERVICE_B_ADJ;
}

}

最新更新