commit | c9ec725cc3398dcc59914b2aea4a56bed434d90b | [log] [tgz] |
---|---|---|
author | PY <pyricau@users.noreply.github.com> | Tue Apr 02 19:25:23 2019 |
committer | GitHub <noreply@github.com> | Tue Apr 02 19:25:23 2019 |
tree | 62066740619448326a5b154a91e071fb17c9d499 | |
parent | d6db42abe4331137e79e63e831961120a6874a71 [diff] |
Analyse multiple leaks at once (#1233) * Heap Analyzer can find all the leaks tracked by RefWatcher in one go, and the heap dump is triggered after at least one weak reference has not been cleared for 5 seconds. * Added watchUptimeMillis to KeyedWeakReference so that we can track exactly how long a leak has existed before the heap dump. * Currently only the first leak of one analysis will be associated to the heap dump files, all others are tied to dummy heap dump files. Also, the notifications replace each other so we effectively only see one leak notification. * RefWatcher is now thread safe with a lock on this which will be cheaper than using copy on write data structures.
A memory leak detection library for Android and Java.
“A small leak will sink a great ship.” - Benjamin Franklin
In your build.gradle
:
dependencies { debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3' releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3' // Optional, if you use support library fragments: debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.3' }
In your Application
class:
public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); if (LeakCanary.isInAnalyzerProcess(this)) { // This process is dedicated to LeakCanary for heap analysis. // You should not init your app in this process. return; } LeakCanary.install(this); // Normal app init code... } }
You're good to go! LeakCanary will automatically show a notification when an activity or support fragment memory leak is detected in your debug build.
What's next? You could watch a live investigation then customize LeakCanary to your needs.
Copyright 2015 Square, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.