diff options
| author | 2019-07-23 00:29:49 +0000 | |
|---|---|---|
| committer | 2019-07-23 00:29:49 +0000 | |
| commit | a3acbb82d540f98b4a63e7feb420bce59a6b9afb (patch) | |
| tree | c5846a7ba41de0295ee08dc6f74aea80617bd193 | |
| parent | 8475d5e0c1695fa5a66675f7386ddb0bfa44574b (diff) | |
| parent | ce8db89ce529343262f7f4c669dd2d8976afcff6 (diff) | |
Merge "Fixed thread leak in OomAdjuster during tests"
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/OomAdjuster.java | 21 |
2 files changed, 16 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index ff8c3e954460..268e813c12dd 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2399,7 +2399,7 @@ public class ActivityManagerService extends IActivityManager.Stub final ActiveUids activeUids = new ActiveUids(this, false /* postChangesToAtm */); mProcessList.init(this, activeUids); mLowMemDetector = null; - mOomAdjuster = new OomAdjuster(this, mProcessList, activeUids); + mOomAdjuster = new OomAdjuster(this, mProcessList, activeUids, handlerThread); mIntentFirewall = hasHandlerThread ? new IntentFirewall(new IntentFirewallInterface(), mHandler) : null; diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index a2613d87d923..770cb3da3362 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -162,6 +162,21 @@ public final class OomAdjuster { private final ProcessList mProcessList; OomAdjuster(ActivityManagerService service, ProcessList processList, ActiveUids activeUids) { + this(service, processList, activeUids, createAdjusterThread()); + } + + private static ServiceThread createAdjusterThread() { + // The process group is usually critical to the response time of foreground app, so the + // setter should apply it as soon as possible. + final ServiceThread adjusterThread = + new ServiceThread(TAG, TOP_APP_PRIORITY_BOOST, false /* allowIo */); + adjusterThread.start(); + Process.setThreadGroupAndCpuset(adjusterThread.getThreadId(), THREAD_GROUP_TOP_APP); + return adjusterThread; + } + + OomAdjuster(ActivityManagerService service, ProcessList processList, ActiveUids activeUids, + ServiceThread adjusterThread) { mService = service; mProcessList = processList; mActiveUids = activeUids; @@ -170,12 +185,6 @@ public final class OomAdjuster { mConstants = mService.mConstants; mAppCompact = new AppCompactor(mService); - // The process group is usually critical to the response time of foreground app, so the - // setter should apply it as soon as possible. - final ServiceThread adjusterThread = new ServiceThread(TAG, TOP_APP_PRIORITY_BOOST, - false /* allowIo */); - adjusterThread.start(); - Process.setThreadGroupAndCpuset(adjusterThread.getThreadId(), THREAD_GROUP_TOP_APP); mProcessGroupHandler = new Handler(adjusterThread.getLooper(), msg -> { final int pid = msg.arg1; final int group = msg.arg2; |