Loading services/core/java/com/android/server/am/ConnectionRecord.java +10 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ProcessList.UNKNOWN_ADJ; import android.annotation.Nullable; import android.app.IServiceConnection; Loading @@ -37,7 +38,7 @@ import java.io.PrintWriter; /** * Description of a single binding to a service. */ final class ConnectionRecord { final class ConnectionRecord implements OomAdjusterModernImpl.Connection{ final AppBindRecord binding; // The application/service binding. final ActivityServiceConnectionsHolder<ConnectionRecord> activity; // If non-null, the owning activity. final IServiceConnection conn; // The client connection. Loading Loading @@ -127,6 +128,14 @@ final class ConnectionRecord { aliasComponent = _aliasComponent; } @Override public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, int oomAdjReason, int cachedAdj) { oomAdjuster.computeServiceHostOomAdjLSP(this, host, client, now, topApp, doingAll, false, false, oomAdjReason, UNKNOWN_ADJ, false, false); } public long getFlags() { return flags; } Loading services/core/java/com/android/server/am/ContentProviderConnection.java +11 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROVIDER; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ProcessList.UNKNOWN_ADJ; import android.annotation.UserIdInt; import android.os.Binder; Loading @@ -32,7 +33,8 @@ import com.android.internal.app.procstats.ProcessStats; /** * Represents a link between a content provider and client. */ public final class ContentProviderConnection extends Binder { public final class ContentProviderConnection extends Binder implements OomAdjusterModernImpl.Connection { public final ContentProviderRecord provider; public final ProcessRecord client; public final String clientPackage; Loading Loading @@ -72,6 +74,14 @@ public final class ContentProviderConnection extends Binder { createTime = SystemClock.elapsedRealtime(); } @Override public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, int oomAdjReason, int cachedAdj) { oomAdjuster.computeProviderHostOomAdjLSP(this, host, client, now, topApp, doingAll, false, false, oomAdjReason, UNKNOWN_ADJ, false, false); } public void startAssociationIfNeeded() { // If we don't already have an active association, create one... but only if this // is an association between two different processes. Loading services/core/java/com/android/server/am/OomAdjuster.java +11 −10 Original line number Diff line number Diff line Loading @@ -587,7 +587,7 @@ public class OomAdjuster { } @GuardedBy({"mService", "mProcLock"}) private void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) { protected void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) { final ProcessRecord topApp = mService.getTopApp(); // Clear any pending ones because we are doing a full update now. mPendingProcessSet.clear(); Loading Loading @@ -913,7 +913,7 @@ public class OomAdjuster { } @GuardedBy("mService") private void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) { protected void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) { final ProcessRecord topApp = mService.getTopApp(); Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, oomAdjReasonToString(oomAdjReason)); Loading Loading @@ -941,7 +941,7 @@ public class OomAdjuster { * must have called {@link collectReachableProcessesLocked} on it. */ @GuardedBy({"mService", "mProcLock"}) protected void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp, private void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp, ArrayList<ProcessRecord> processes, ActiveUids uids, boolean potentialCycles, boolean startProfiling) { final boolean fullUpdate = processes == null; Loading Loading @@ -1775,12 +1775,11 @@ public class OomAdjuster { state.setAdjSeq(mAdjSeq); state.setCurrentSchedulingGroup(SCHED_GROUP_BACKGROUND); state.setCurProcState(PROCESS_STATE_CACHED_EMPTY); state.setCurRawProcState(PROCESS_STATE_CACHED_EMPTY); state.setCurAdj(CACHED_APP_MAX_ADJ); state.setCurRawAdj(CACHED_APP_MAX_ADJ); state.setCompletedAdjSeq(state.getAdjSeq()); state.setCurCapability(PROCESS_CAPABILITY_NONE); onProcessStateChanged(app, prevProcState); onProcessOomAdjChanged(app, prevAppAdj); return false; } Loading Loading @@ -1843,8 +1842,6 @@ public class OomAdjuster { state.setCurRawProcState(state.getCurProcState()); state.setCurAdj(state.getMaxAdj()); state.setCompletedAdjSeq(state.getAdjSeq()); onProcessStateChanged(app, prevProcState); onProcessOomAdjChanged(app, prevAppAdj); // if curAdj is less than prevAppAdj, then this process was promoted return state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState; } Loading Loading @@ -2561,7 +2558,7 @@ public class OomAdjuster { } @GuardedBy({"mService", "mProcLock"}) protected boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app, public boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, boolean cycleReEval, boolean computeClients, int oomAdjReason, int cachedAdj, boolean couldRecurse, boolean dryRun) { Loading Loading @@ -2991,7 +2988,11 @@ public class OomAdjuster { return updated; } protected boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn, /** * Computes the impact on {@code app} the provider connections from {@code client} has. */ @GuardedBy({"mService", "mProcLock"}) public boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn, ProcessRecord app, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, boolean cycleReEval, boolean computeClients, int oomAdjReason, int cachedAdj, boolean couldRecurse, boolean dryRun) { Loading Loading @@ -3572,7 +3573,7 @@ public class OomAdjuster { int initialCapability = PROCESS_CAPABILITY_NONE; boolean initialCached = true; final ProcessStateRecord state = app.mState; final int prevProcState = state.getCurRawProcState(); final int prevProcState = state.getCurProcState(); final int prevAdj = state.getCurRawAdj(); // If the process has been marked as foreground, it is starting as the top app (with // Zygote#START_AS_TOP_APP_ARG), so boost the thread priority of its default UI thread. Loading services/core/java/com/android/server/am/OomAdjusterModernImpl.java +335 −314 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/am/ProcessList.java +1 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public final class ProcessList { // Number of levels we have available for different service connection group importance // levels. static final int CACHED_APP_IMPORTANCE_LEVELS = 5; public static final int CACHED_APP_IMPORTANCE_LEVELS = 5; // 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. Loading Loading
services/core/java/com/android/server/am/ConnectionRecord.java +10 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ProcessList.UNKNOWN_ADJ; import android.annotation.Nullable; import android.app.IServiceConnection; Loading @@ -37,7 +38,7 @@ import java.io.PrintWriter; /** * Description of a single binding to a service. */ final class ConnectionRecord { final class ConnectionRecord implements OomAdjusterModernImpl.Connection{ final AppBindRecord binding; // The application/service binding. final ActivityServiceConnectionsHolder<ConnectionRecord> activity; // If non-null, the owning activity. final IServiceConnection conn; // The client connection. Loading Loading @@ -127,6 +128,14 @@ final class ConnectionRecord { aliasComponent = _aliasComponent; } @Override public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, int oomAdjReason, int cachedAdj) { oomAdjuster.computeServiceHostOomAdjLSP(this, host, client, now, topApp, doingAll, false, false, oomAdjReason, UNKNOWN_ADJ, false, false); } public long getFlags() { return flags; } Loading
services/core/java/com/android/server/am/ContentProviderConnection.java +11 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROVIDER; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ProcessList.UNKNOWN_ADJ; import android.annotation.UserIdInt; import android.os.Binder; Loading @@ -32,7 +33,8 @@ import com.android.internal.app.procstats.ProcessStats; /** * Represents a link between a content provider and client. */ public final class ContentProviderConnection extends Binder { public final class ContentProviderConnection extends Binder implements OomAdjusterModernImpl.Connection { public final ContentProviderRecord provider; public final ProcessRecord client; public final String clientPackage; Loading Loading @@ -72,6 +74,14 @@ public final class ContentProviderConnection extends Binder { createTime = SystemClock.elapsedRealtime(); } @Override public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, int oomAdjReason, int cachedAdj) { oomAdjuster.computeProviderHostOomAdjLSP(this, host, client, now, topApp, doingAll, false, false, oomAdjReason, UNKNOWN_ADJ, false, false); } public void startAssociationIfNeeded() { // If we don't already have an active association, create one... but only if this // is an association between two different processes. Loading
services/core/java/com/android/server/am/OomAdjuster.java +11 −10 Original line number Diff line number Diff line Loading @@ -587,7 +587,7 @@ public class OomAdjuster { } @GuardedBy({"mService", "mProcLock"}) private void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) { protected void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) { final ProcessRecord topApp = mService.getTopApp(); // Clear any pending ones because we are doing a full update now. mPendingProcessSet.clear(); Loading Loading @@ -913,7 +913,7 @@ public class OomAdjuster { } @GuardedBy("mService") private void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) { protected void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) { final ProcessRecord topApp = mService.getTopApp(); Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, oomAdjReasonToString(oomAdjReason)); Loading Loading @@ -941,7 +941,7 @@ public class OomAdjuster { * must have called {@link collectReachableProcessesLocked} on it. */ @GuardedBy({"mService", "mProcLock"}) protected void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp, private void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp, ArrayList<ProcessRecord> processes, ActiveUids uids, boolean potentialCycles, boolean startProfiling) { final boolean fullUpdate = processes == null; Loading Loading @@ -1775,12 +1775,11 @@ public class OomAdjuster { state.setAdjSeq(mAdjSeq); state.setCurrentSchedulingGroup(SCHED_GROUP_BACKGROUND); state.setCurProcState(PROCESS_STATE_CACHED_EMPTY); state.setCurRawProcState(PROCESS_STATE_CACHED_EMPTY); state.setCurAdj(CACHED_APP_MAX_ADJ); state.setCurRawAdj(CACHED_APP_MAX_ADJ); state.setCompletedAdjSeq(state.getAdjSeq()); state.setCurCapability(PROCESS_CAPABILITY_NONE); onProcessStateChanged(app, prevProcState); onProcessOomAdjChanged(app, prevAppAdj); return false; } Loading Loading @@ -1843,8 +1842,6 @@ public class OomAdjuster { state.setCurRawProcState(state.getCurProcState()); state.setCurAdj(state.getMaxAdj()); state.setCompletedAdjSeq(state.getAdjSeq()); onProcessStateChanged(app, prevProcState); onProcessOomAdjChanged(app, prevAppAdj); // if curAdj is less than prevAppAdj, then this process was promoted return state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState; } Loading Loading @@ -2561,7 +2558,7 @@ public class OomAdjuster { } @GuardedBy({"mService", "mProcLock"}) protected boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app, public boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, boolean cycleReEval, boolean computeClients, int oomAdjReason, int cachedAdj, boolean couldRecurse, boolean dryRun) { Loading Loading @@ -2991,7 +2988,11 @@ public class OomAdjuster { return updated; } protected boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn, /** * Computes the impact on {@code app} the provider connections from {@code client} has. */ @GuardedBy({"mService", "mProcLock"}) public boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn, ProcessRecord app, ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll, boolean cycleReEval, boolean computeClients, int oomAdjReason, int cachedAdj, boolean couldRecurse, boolean dryRun) { Loading Loading @@ -3572,7 +3573,7 @@ public class OomAdjuster { int initialCapability = PROCESS_CAPABILITY_NONE; boolean initialCached = true; final ProcessStateRecord state = app.mState; final int prevProcState = state.getCurRawProcState(); final int prevProcState = state.getCurProcState(); final int prevAdj = state.getCurRawAdj(); // If the process has been marked as foreground, it is starting as the top app (with // Zygote#START_AS_TOP_APP_ARG), so boost the thread priority of its default UI thread. Loading
services/core/java/com/android/server/am/OomAdjusterModernImpl.java +335 −314 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/am/ProcessList.java +1 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public final class ProcessList { // Number of levels we have available for different service connection group importance // levels. static final int CACHED_APP_IMPORTANCE_LEVELS = 5; public static final int CACHED_APP_IMPORTANCE_LEVELS = 5; // 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. Loading