From 47698882f90b762b1bc960b5f6757a120d41bb78 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Tue, 16 May 2017 09:45:28 -0700 Subject: [PATCH] PackageManager: Change post-install GC request Only run a blocking GC when updating. Otherwise, only request a concurrent GC to clean up. Bug: 38259387 Test: m Test: Device boots Test: Install works Change-Id: Id1a0e956f26e166d927f833075bc4807f32b94f7 --- .../java/com/android/server/pm/PackageManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d171f6eb1ac14..473c0823741b4 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2026,15 +2026,17 @@ public class PackageManagerService extends IPackageManager.Stub EventLog.writeEvent(EventLogTags.UNKNOWN_SOURCES_ENABLED, getUnknownSourcesSettings()); - // Force a gc to clear up things - Runtime.getRuntime().gc(); - // Remove the replaced package's older resources safely now // We delete after a gc for applications on sdcard. if (res.removedInfo != null && res.removedInfo.args != null) { + Runtime.getRuntime().gc(); synchronized (mInstallLock) { res.removedInfo.args.doPostDeleteLI(true); } + } else { + // Force a gc to clear up things. Ask for a background one, it's fine to go on + // and not block here. + VMRuntime.getRuntime().requestConcurrentGC(); } // Notify DexManager that the package was installed for new users.