性能测试工具 内存泄露配置 (优化版)

Heyniu · September 13, 2016 · Last by Heyniu replied at July 26, 2017 · 1884 hits

传送门

专项:Android内存泄露实践分析

为什么要优化

  • 痛点:

    • leakcanary结合monkey时,会点到删除按钮,导致检测到的内存泄露被删除,前功尽弃。
  • 解决方案:

    • 考虑屏蔽删除按钮操作

获取leakcanary

  • github搜索leakcanary
  • 项目clone到本地
  • 打开项目

修改leakcanary

  • 打开DisplayLeakActivity文件,找到删除按钮对应的代码,搜索setOnClickListener()定位
  • 注释删除按钮方法,并添加提示(操作被拒绝)
  • 共发现3处调用删除方法(重复的代码未贴出)
actionButton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// deleteVisibleLeak();
Toast.makeText(DisplayLeakActivity.this, "Operating rejected!", Toast.LENGTH_SHORT).show();
}
});

actionButton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// deleteAllLeaks();
Toast.makeText(DisplayLeakActivity.this, "Operating rejected!", Toast.LENGTH_SHORT).show();
}
});

编译leakcanary

  • 编译leakcanary-android项目
  • 编译leakcanary-analyzer项目
  • 编译leakcanary-watcher项目
  • 得到3个aar文件
  • copy到项目libs文件夹目录下

配置leakcanary

  • build.gradle添加依赖
compile(name: 'leakcanary-android-debug', ext: 'aar')
compile(name: 'leakcanary-analyzer-debug', ext: 'aar')
compile(name: 'leakcanary-watcher-debug', ext: 'aar')
compile 'com.squareup.haha:haha:2.0.3'

运行leakcanary

  • monkey再也删不掉检测到的内存泄露了
  • 如果想删除可以到SD卡内删除

伸手党

百度云盘

20160930最新解决方案,强烈推荐

只需改动一处,上面的修改太麻烦

refWatcher = LeakCanary.install(this);
LeakCanaryInternals.setEnabled(this, DisplayLeakActivity.class, false);

泄露信息需要手动配置上传服务器,或者从sd卡拉回来

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞

@testsina 你需要的

也可以在删除方法里面加些删除之前保存文件的方法

@heyniu 有qq么……

#4楼 @kasi 335827476

请问一下,你的网盘分享里面是关于leakcanary所涉及到的打成的jar包么?,之前也研究过一阵子,但是苦于网上用的这个东西都是基于androidstudio + gradle做的,关于eclipse的很少,而且也是基于maven管理的,好像没有完整的leakcanary.jar

@heyniu 好的,谢谢

真心不错。

😂 或许可以将每次的获取的信息上传到自定义平台中或上传到指定的文件夹中。附上资料:http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/

LeakCanaryInternals.setEnabled(this, DisplayLeakActivity.class, false);
请问日志是在哪个目录下

Heyniu #12 · July 26, 2017 作者
summe 回复

leaks应用里面有泄漏堆栈

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up