From 1f771846c51148b7cb6283e6dc82a216ffaa5353 Mon Sep 17 00:00:00 2001 From: Lee Shombert Date: Sat, 22 Feb 2020 13:24:02 -0800 Subject: [PATCH] Fix a leak in HasSystemFeatureCache. Bug: 150037560 Make HasSystemFeatureQuery static so that it does not retain a handle to ApplicationPackageManager. Test: Boot with an instrumented image to verify that caching still works as expected. Took a heap profile to verify that there were no leaks in the cache. Change-Id: I2cd39a6dfab9cc1bf04bb7f55638a572213f04ce --- core/java/android/app/ApplicationPackageManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 969ea707d434c..87d33a9804383 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -99,6 +99,7 @@ import android.util.Log; import android.view.Display; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.Immutable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.util.UserIcons; @@ -612,7 +613,11 @@ public class ApplicationPackageManager extends PackageManager { return hasSystemFeature(name, 0); } - private class HasSystemFeatureQuery { + /** + * Identifies a single hasSystemFeature query. + */ + @Immutable + private static final class HasSystemFeatureQuery { public final String name; public final int version; public HasSystemFeatureQuery(String n, int v) {