From eafb535072698b0559d8919db4b18618359c11b9 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Tue, 4 Oct 2016 16:34:48 -0700 Subject: [PATCH] Eliminate unnecessary object churn in job scheduler updating The arbitrary-caller "what job is currently running?" state inspector returns a clone of the JobStatus record for it, not a live reference to the scheduler's active state. That's appropriate for most cases but when doing its own internal bookkeeping, the object churn in cloning (especially, an unneeded clone just for purposes of comparing to some other job!) is merely a huge waste of CPU and GC load. So now we don't do that unnecessarily, and everything is much leaner. Bug 31751985 Change-Id: Idacb52e9e5ca17b9e12b7ccd2fc2e1ec8b3547f6 --- .../core/java/com/android/server/job/JobSchedulerService.java | 6 +++++- services/core/java/com/android/server/job/JobServiceContext.java | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 9d931467d914..ba3977268190 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -907,7 +907,11 @@ public final class JobSchedulerService extends com.android.server.SystemService private boolean isCurrentlyActiveLocked(JobStatus job) { for (int i=0; i