LeakCanary,它是一个Android和Java的内存泄露检测库,可以大幅度减少了开发中遇到的OOM问题,对于开发者来说,无疑是个福音;
以下是我的参考资料,写得很不错:
AndroidStudio (官方)上使用LeakCanary 请移步:
https://github.com/square/leakcanary
Eclipse 上使用LeakCanary 请移步我的:
https://github.com/SOFTPOWER1991/LeakcanarySample-Eclipse
工程包括:
- LeakCanary库代码
- LeakCanaryDemo示例代码
使用步骤:
-
将LeakCanary import 入自己的工程
-
添加依赖:
compile project(':leakcanary') -
在Application中进行配置
public class ExampleApplication extends Application { ...... //在自己的Application中添加如下代码 public static RefWatcher getRefWatcher(Context context) { ExampleApplication application = (ExampleApplication) context .getApplicationContext(); return application.refWatcher; } //在自己的Application中添加如下代码 private RefWatcher refWatcher; @Override public void onCreate() { super.onCreate(); ...... //在自己的Application中添加如下代码 refWatcher = LeakCanary.install(this); ...... } ..... }
-
在Activity中进行配置(在onDestory中处理)
@Override public void onDestroy() { super.onDestroy(); ExampleApplication.getRefWatcher(this).watch(this); }
-
AndroidMainfest.xml 中进行配置,添加如下代码
<service android:name="com.squareup.leakcanary.internal.HeapAnalyzerService" android:enabled="false" android:process=":leakcanary" /> <service android:name="com.squareup.leakcanary.DisplayLeakService" android:enabled="false" /> <activity android:name="com.squareup.leakcanary.internal.DisplayLeakActivity" android:enabled="false" android:icon="@drawable/__leak_canary_icon" android:label="@string/__leak_canary_display_activity_label" android:taskAffinity="com.squareup.leakcanary" android:theme="@style/__LeakCanary.Base" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
当我们的App中存在内存泄露时会在通知栏弹出通知:
当点击该通知时,会跳转到具体的页面,展示出Leak的引用路径,如下图所示:
好了处女作就此完结



被折叠的 条评论
为什么被折叠?



