Fix binder force gc will block binder thread
Symptom: Force gc caused activity launch time took longer
Root Cause: Runtime.getRuntime().gc will block binder thread
Solution: Use VMRuntime.requestConcurrentGC() will not block binder
thread
(cherry pick commit d916c233f0ed615667c1c2338c779e819098d135)
Bug: 20554807
Change-Id: Ia9fecea51d2b0a6635e037b5f2bfcb8eb87f4103
diff --git a/core/java/com/android/internal/os/BinderInternal.java b/core/java/com/android/internal/os/BinderInternal.java
index 240d9df..d77b998 100644
--- a/core/java/com/android/internal/os/BinderInternal.java
+++ b/core/java/com/android/internal/os/BinderInternal.java
@@ -20,6 +20,8 @@
import android.os.SystemClock;
import android.util.EventLog;
+import dalvik.system.VMRuntime;
+
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -96,7 +98,7 @@
public static void forceGc(String reason) {
EventLog.writeEvent(2741, reason);
- Runtime.getRuntime().gc();
+ VMRuntime.getRuntime().requestConcurrentGC();
}
static void forceBinderGc() {