diff options
author | Jeff Sharkey <jsharkey@android.com> | 2014-01-16 12:46:37 -0800 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2014-01-16 12:46:43 -0800 |
commit | 6f3a38f3afd79ed6dddcef5c83cb442d6749e2ff (patch) | |
tree | d14b12a1cf2b1cf1df2e5833feb2c6db69e4b541 /core/java/android/os | |
parent | 4ca728c064aeab644f6d044e0285eaa056818b8a (diff) | |
download | frameworks_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.java | 11 |
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) { |