LeakCanary内存泄漏初探

关于LeakCanary 的实现原理,以及诸多好处此处不做赘述。下面仅讲述自己是如何搭建Django+Python+LeakCanary内存泄漏统计平台的。

1.在AndroidStudio中配置LeakCanary

(1)在build.gradle文件中引入对LeakCanary的依赖,其中设置为正式环境不使用LeakCanary

  debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
  releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
  testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'

(2)在项目的Application中引用LeakCanary

    LeakCanary.install(this)

2.重写内存泄漏处理类
创建一个LeakUploadService 继承DisplayLeakService,并重写发生内存泄漏后的处理方法:

Paste_Image.png
Paste_Image.png
Paste_Image.png

3.重载LeakCanary类中的install方法
由于LeakCanary类中的install方法传递的为DisplayLeakService类,所以为了保证使用自己的处理类,则需要重载LeakCanary的install方法。并修改在Application中对LeakCanary的引用。此处在项目中重新定义了一个名为LeakCanaryWithoutDisplay 的类来实现该操作。

Paste_Image.png
Paste_Image.png

4.LeakUploadService 中上传内存泄漏数据所应用的接口,需要自己编写。此处不提供源代码。

5.在Python 中引入 JIRA 库
(1)通过 pip 安装JIRA,pip install jira
(2)在python 2.7中通过 from jira import JIRA 时报错

Paste_Image.png
      解决方法:修改/Library/Python/2.7/site-packages/packaging/requirements.py 中的MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker”) 为 MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker”)

(3)一个测试demo

Paste_Image.png

6.实现最终效果如下

Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    宇宙只有巴掌大阅读 2,415评论 0 12
  • 还是在八点前赶到了公司,把车放在车库,请了假,就去理发了。理完后,老板娘直夸“年轻了不少”很受用。 九点,打电话,...
    阅微书房阅读 284评论 0 0
  • 老成让我帮着写句最美协警励志语、座右铭之类地。想了想,通俗点说,就是玩文字游戏。我不熟悉这个,不好捯饬,心一热,只...
    媒人2016阅读 741评论 1 0
  • 你好,您好,嗨、老朋友 不好意思,我有些紧张,不知道该如何和你说第一句话,我是否应该说一句,好久不见,你还好吗? ...
    大幕阅读 391评论 0 0
  • 患者自述病症为: 心脏被看不见的线束缚着,每一次心脏的跳动都仿佛牵扯着无形束缚着的线,紧勒住心脏,在上面划出一道道...
    唐叨阅读 4,148评论 0 3