summaryrefslogtreecommitdiffstats
path: root/core/java/android/os
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2014-01-16 12:46:37 -0800
committerJeff Sharkey <jsharkey@android.com>2014-01-16 12:46:43 -0800
commit6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff (patch)
treed14b12a1cf2b1cf1df2e5833feb2c6db69e4b541 /core/java/android/os
parent4ca728c064aeab644f6d044e0285eaa056818b8a (diff)
downloadframeworks_base-6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff.zip
frameworks_base-6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff.tar.gz
frameworks_base-6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff.tar.bz2
Run finalizers before counting for StrictMode.
Otherwise we sometimes end up counting objects strongly referenced by the finalizer queue, and falsely detecting an instance leak. Bug: 12533002 Change-Id: I144c941a3dfb0cbb837b98e80d2f49ffc9ca13c7
Diffstat (limited to 'core/java/android/os')
-rw-r--r--core/java/android/os/StrictMode.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index d794ca6..ea71ad8 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -1449,7 +1449,11 @@ public final class StrictMode {
if (policy.classInstanceLimit.size() == 0) {
return;
}
- Runtime.getRuntime().gc();
+
+ System.gc();
+ System.runFinalization();
+ System.gc();
+
// Note: classInstanceLimit is immutable, so this is lock-free
for (Map.Entry<Class, Integer> entry : policy.classInstanceLimit.entrySet()) {
Class klass = entry.getKey();
@@ -2005,7 +2009,10 @@ public final class StrictMode {
// noticeably less responsive during orientation changes when activities are
// being restarted. Granted, it is only a problem when StrictMode is enabled
// but it is annoying.
- Runtime.getRuntime().gc();
+
+ System.gc();
+ System.runFinalization();
+ System.gc();
long instances = VMDebug.countInstancesOfClass(klass, false);
if (instances > limit) {