Loading services/core/java/com/android/server/am/CachedAppOptimizer.java +27 −14 Original line number Diff line number Diff line Loading @@ -382,11 +382,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppSome(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_SOME); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getSetAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") void compactAppFull(ProcessRecord app) { Loading @@ -396,10 +399,13 @@ public final class CachedAppOptimizer { && app.mState.getCurAdj() >= mCompactThrottleMinOomAdj && app.mState.getCurAdj() <= mCompactThrottleMaxOomAdj) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_FULL); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getSetAdj(), app.mState.getSetProcState())); } } else { if (DEBUG_COMPACTION) { Slog.d(TAG_AM, "Skipping full compaction for " + app.processName Loading @@ -412,11 +418,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppPersistent(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_PERSISTENT); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getCurAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") boolean shouldCompactPersistent(ProcessRecord app, long now) { Loading @@ -427,11 +436,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppBfgs(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_BFGS); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getCurAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") boolean shouldCompactBFGS(ProcessRecord app, long now) { Loading Loading @@ -954,6 +966,7 @@ public final class CachedAppOptimizer { pendingAction = opt.getReqCompactAction(); pid = proc.getPid(); name = proc.processName; opt.setHasPendingCompact(false); // don't compact if the process has returned to perceptible // and this is only a cached/home/prev compaction Loading services/core/java/com/android/server/am/ProcessCachedOptimizerRecord.java +16 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,12 @@ final class ProcessCachedOptimizerRecord { @GuardedBy("mProcLock") private int mLastCompactAction; /** * This process has been scheduled for a memory compaction. */ @GuardedBy("mProcLock") private boolean mPendingCompact; /** * True when the process is frozen. */ Loading Loading @@ -100,6 +106,16 @@ final class ProcessCachedOptimizerRecord { mLastCompactAction = lastCompactAction; } @GuardedBy("mProcLock") boolean hasPendingCompact() { return mPendingCompact; } @GuardedBy("mProcLock") void setHasPendingCompact(boolean pendingCompact) { mPendingCompact = pendingCompact; } @GuardedBy("mProcLock") boolean isFrozen() { return mFrozen; Loading Loading
services/core/java/com/android/server/am/CachedAppOptimizer.java +27 −14 Original line number Diff line number Diff line Loading @@ -382,11 +382,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppSome(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_SOME); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getSetAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") void compactAppFull(ProcessRecord app) { Loading @@ -396,10 +399,13 @@ public final class CachedAppOptimizer { && app.mState.getCurAdj() >= mCompactThrottleMinOomAdj && app.mState.getCurAdj() <= mCompactThrottleMaxOomAdj) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_FULL); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getSetAdj(), app.mState.getSetProcState())); } } else { if (DEBUG_COMPACTION) { Slog.d(TAG_AM, "Skipping full compaction for " + app.processName Loading @@ -412,11 +418,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppPersistent(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_PERSISTENT); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getCurAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") boolean shouldCompactPersistent(ProcessRecord app, long now) { Loading @@ -427,11 +436,14 @@ public final class CachedAppOptimizer { @GuardedBy("mProcLock") void compactAppBfgs(ProcessRecord app) { app.mOptRecord.setReqCompactAction(COMPACT_PROCESS_BFGS); if (!app.mOptRecord.hasPendingCompact()) { app.mOptRecord.setHasPendingCompact(true); mPendingCompactionProcesses.add(app); mCompactionHandler.sendMessage( mCompactionHandler.obtainMessage( COMPACT_PROCESS_MSG, app.mState.getCurAdj(), app.mState.getSetProcState())); } } @GuardedBy("mProcLock") boolean shouldCompactBFGS(ProcessRecord app, long now) { Loading Loading @@ -954,6 +966,7 @@ public final class CachedAppOptimizer { pendingAction = opt.getReqCompactAction(); pid = proc.getPid(); name = proc.processName; opt.setHasPendingCompact(false); // don't compact if the process has returned to perceptible // and this is only a cached/home/prev compaction Loading
services/core/java/com/android/server/am/ProcessCachedOptimizerRecord.java +16 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,12 @@ final class ProcessCachedOptimizerRecord { @GuardedBy("mProcLock") private int mLastCompactAction; /** * This process has been scheduled for a memory compaction. */ @GuardedBy("mProcLock") private boolean mPendingCompact; /** * True when the process is frozen. */ Loading Loading @@ -100,6 +106,16 @@ final class ProcessCachedOptimizerRecord { mLastCompactAction = lastCompactAction; } @GuardedBy("mProcLock") boolean hasPendingCompact() { return mPendingCompact; } @GuardedBy("mProcLock") void setHasPendingCompact(boolean pendingCompact) { mPendingCompact = pendingCompact; } @GuardedBy("mProcLock") boolean isFrozen() { return mFrozen; Loading