使用新版Android Studio检测内存泄露和性能
2017-07-03 19:37
405 查看
http://www.jianshu.com/p/216b03c22bb8
内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。
![](//upload-images.jianshu.io/upload_images/1132780-73e291aa4ba75a50.png?imageMogr2/auto-orient/strip%7CimageView2/2)
内存分析界面
一般分析内存泄露, 首先运行程序,打开日志控制台,有一个标签Memory ,我们可以在这个界面分析当前程序使用的内存情况, 一目了然, 我们再也不需要苦苦的在logcat中寻找内存的日志了。
图中蓝色区域,就是程序使用的内存, 灰色区域就是空闲内存,
当然,Android内存分配机制是对每个应用程序逐步增加, 比如你程序当前使用30M内存, 系统可能会给你分配40M,
当前就有10M空闲, 如果程序使用了50M了,系统会紧接着给当前程序增加一部分,比如达到了80M, 当前你的空闲内存就是30M了。
当然,系统如果不能再给你分配额外的内存,程序自然就会OOM(内存溢出)了。
每个应用程序最高可以申请的内存和手机密切相关,比如我当前使用的华为Mate7,极限大概是200M,算比较高的了, 一般128M 就是极限了,
甚至有的手机只有可怜的16M或者32M,这样的手机相对于内存溢出的概率非常大了。
内存泄露就是指,本应该回收的内存,还驻留在内存中。一般情况下,高密度的手机,一个页面大概就会消耗20M内存,如果发现退出界面,程序内存迟迟不降低的话,可能就发生了严重的内存泄露。我们可以反复进入该界面,然后点击dump
java heap 这个按钮,然后Android Studio就开始干活了,下面的图就是正在dump
![](//upload-images.jianshu.io/upload_images/1132780-7b6085de6f082879.png?imageMogr2/auto-orient/strip%7CimageView2/2)
正在dump
dump成功后会自动打开 hprof文件,文件以Snapshot+时间来命名
![](//upload-images.jianshu.io/upload_images/1132780-65b2ff097ceda16e.png?imageMogr2/auto-orient/strip%7CimageView2/2)
内存分析结果
通过Android Studio自带的界面,查看内存泄露还不是很智能,我们可以借助第三方工具,常见的工具就是MAT了,下载地址 http://eclipse.org/mat/downloads.php ,这里我们需要下载独立版的MAT. 下图是MAT一开始打开的界面, 这里需要提醒大家的是,MAT并不会准确地告诉我们哪里发生了内存泄漏,而是会提供一大堆的数据和线索,我们需要自己去分析这些数据来去判断到底是不是真的发生了内存泄漏。
![](//upload-images.jianshu.io/upload_images/1132780-f4974d8f4aa75267.png?imageMogr2/auto-orient/strip%7CimageView2/2)
MAT主界面
接下来我们需要用MAT打开内存分析的文件, 上文给大家介绍了使用Android Studio生成了 hprof文件, 这个文件在呢, 在Android Studio中的Captrues这个目录中,可以找到
![](//upload-images.jianshu.io/upload_images/1132780-d1b42ee9101d8219.png?imageMogr2/auto-orient/strip%7CimageView2/2)
hprof目录]
注意,这个文件不能直接交给MAT, MAT是不识别的, 我们需要右键点击这个文件,转换成MAT识别的。
![](//upload-images.jianshu.io/upload_images/1132780-bd3324047401b60f.png?imageMogr2/auto-orient/strip%7CimageView2/2)
导出标准的hprof
然后用MAT打开导出的hprof(File->Open heap dump) MAT会帮我们分析内存泄露的原因
![](//upload-images.jianshu.io/upload_images/1132780-6c9c8639bb131edb.png?imageMogr2/auto-orient/strip%7CimageView2/2)
打开标准的hprof
![](//upload-images.jianshu.io/upload_images/1132780-10748547ba059f3e.png?imageMogr2/auto-orient/strip%7CimageView2/2)
自动分析内存泄露的原因
项目地址:https://github.com/square/leakcanaryLeakCanary
会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,也就是上边MAT用到的.hprof文件,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露.
![](//upload-images.jianshu.io/upload_images/1132780-d48580f2577b60af.png?imageMogr2/auto-orient/strip%7CimageView2/2)
手机端查看内存泄露.png
使用:
在build.gradle文件中添加,不同的编译使用不同的引用:
在应用的Application onCreate方法中添加LeakCanary.install(this),如下:
应用运行起来后,LeakCanary会自动去分析当前的内存状态,如果检测到泄漏会发送到通知栏,点击通知栏就可以跳转到具体的泄漏分析页面。Tips:就目前使用的结果来看,绝大部分泄漏是由于使用单例模式hold住了Activity的引用,比如传入了context或者将Activity作为listener设置了进去,所以在使用单例模式的时候要特别注意,还有在Activity生命周期结束的时候将一些自定义监听器的Activity引用置空。
关于LeakCanary的更多分析可以看项目主页的介绍,还有这里
http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
![](//upload-images.jianshu.io/upload_images/1132780-0244bebf7437f309.png?imageMogr2/auto-orient/strip%7CimageView2/2)
点击追踪内存分配
点一下是追踪, 再点一下是停止追踪, 停止追踪后 .alloc文件会自动打开,打开后界面如下:
![](//upload-images.jianshu.io/upload_images/1132780-01804a7ff4472f96.png?imageMogr2/auto-orient/strip%7CimageView2/2)
追踪内存结构展示
当你想查看某个方法的源码时,右键选择的方法,点击Jump to source就可以了
![](//upload-images.jianshu.io/upload_images/1132780-b8e2a2b6826ffe10.png?imageMogr2/auto-orient/strip%7CimageView2/2)
检测性能界面
Android studio2.1 界面发生了变化,功能没有太大区别:
![](//upload-images.jianshu.io/upload_images/1132780-d4013b5b63fb7cae.png?imageMogr2/auto-orient/strip%7CimageView2/2)
新版本界面
如果我们要观测方法执行的时间,就需要来到CPU界面
![](//upload-images.jianshu.io/upload_images/1132780-9cdfc9784f6a27db.png?imageMogr2/auto-orient/strip%7CimageView2/2)
追踪方法耗时
点击Start Method Tracking, 一段时间后再点击一次, trace文件被自动打开,
![](//upload-images.jianshu.io/upload_images/1132780-a66064f4a41d08fa.png?imageMogr2/auto-orient/strip%7CimageView2/2)
结果
非独占时间: 某函数占用的CPU时间,包含内部调用其它函数的CPU时间。
独占时间: 某函数占用CPU时间,但不含内部调用其它函数所占用的CPU时间。
如果方法调用次数不多,但每次调用却需要花费很长的时间的函数,可能会有问题。
如果自身占用时间不长,但调用却非常频繁的函数也可能会有问题。
最近开通了微信公众账号,大家捧场啊
![](//upload-images.jianshu.io/upload_images/1132780-9499ace54735fef2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2)
微信公众账号:likeDev
Android实用技术
© 著作权归作者所有
举报文章
![](http://upload.jianshu.io/users/upload_avatars/1132780/9c3554d323dc?imageMogr2/auto-orient/strip%7CimageView2/1/w/144/h/144)
于连林520wcf
写了 62500 字,被 1268 人关注,获得了 2495 个喜欢
微信公众账号: likeDev
QQ学习群:488929846
Android电子书: http://book.520wcf.com 视频地址: http://youku.520wcf.com
CSDN博客地址:http://blog.csdn.net/yulianlin
更多精彩内容,关注微信公众账号likeDev,如果作品对您有所帮助,随意打赏
更多分享
![](http://cdn2.jianshu.io/assets/default_avatar/avatar_default-78d4d1f68984cd6d4379508dd94b4210.png)
后发表评论
35条评论 只看作者
按喜欢排序按时间正序按时间倒序
![](http://cdn2.jianshu.io/assets/default_avatar/15-a7ac401939dd4df837e3bbf82abaa2a8.jpg)
mrwangyong
6楼 · 2016.01.02 19:49
好东西,谢谢搂住
1人赞 回复
![](http://upload.jianshu.io/users/upload_avatars/746997/73c40b3daa6f.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
追风917
2楼 · 2015.12.27 05:40
不错
赞 回复
于连林520wcf:
@追风917 多谢支持了
2015.12.29 09:12 回复
还我漂漂拳哦:
@于连林520wcf 确实不错
2016.06.01 11:33 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/611087/cf25a1a395f7.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
MrFu
3楼 · 2015.12.27 17:26
棒极了
赞 回复
于连林520wcf:
@MrFu 班门弄斧了
2015.12.29 09:12 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/1392524/19c28c7f7a39.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
lo_android
4楼 · 2015.12.29 20:36
好东西
赞 回复
于连林520wcf:
@lo_android 谢谢支持
2015.12.30 07:42 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/1320505/4da203f1fcd5?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
勤奋小喜子
5楼 · 2016.01.01 00:33
赞啊
赞 回复
![](http://upload.jianshu.io/users/upload_avatars/719051/f74516b4-f12f-4852-bac6-1fec58de90c6.jpeg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
小蛤蟆智
7楼 · 2016.04.09 11:11
好文。
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/4-3397163ecdb3855a0a4139c34a695885.jpg)
ChrisYuu
8楼 · 2016.04.15 14:42
请问怎么根据深度来定位哪里内存泄漏呢?
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/8-a356878e44b45ab268a3b0bbaaadeeb7.jpg)
孤独的树叶
9楼 · 2016.04.16 21:39
很好
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/14-0651acff782e7a18653d7530d6b27661.jpg)
黄盖突然
10楼 · 2016.04.28 13:41
收藏了
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/9-cceda3cf5072bcdd77e8ca4f21c40998.jpg)
QQ00001
11楼 · 2016.04.28 13:49
正在发愁的时候,搜索到了于大神的这篇文章
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/12-aeeea4bedf10f2a12c0d50d626951489.jpg)
SwitchCase
12楼 · 2016.04.28 17:40
支持
赞 回复
于连林520wcf:
@SwitchCase 谢谢
2016.04.28 17:54 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/1992590/53b56e40e182.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
米阳MeYoung
13楼 · 2016.04.30 23:56
学习了
赞 回复
![](http://upload.jianshu.io/users/upload_avatars/650671/176b96065ac6.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
微凉一季
14楼 · 2016.05.10 22:49
必须赞啊
内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。
熟悉Android Studio界面工欲善其事,必先利其器。
我们接下来先来熟悉下Android Studio的界面![](http://upload-images.jianshu.io/upload_images/1132780-73e291aa4ba75a50.png?imageMogr2/auto-orient/strip%7CimageView2/2)
内存分析界面
一般分析内存泄露, 首先运行程序,打开日志控制台,有一个标签Memory ,我们可以在这个界面分析当前程序使用的内存情况, 一目了然, 我们再也不需要苦苦的在logcat中寻找内存的日志了。
图中蓝色区域,就是程序使用的内存, 灰色区域就是空闲内存,
当然,Android内存分配机制是对每个应用程序逐步增加, 比如你程序当前使用30M内存, 系统可能会给你分配40M,
当前就有10M空闲, 如果程序使用了50M了,系统会紧接着给当前程序增加一部分,比如达到了80M, 当前你的空闲内存就是30M了。
当然,系统如果不能再给你分配额外的内存,程序自然就会OOM(内存溢出)了。
每个应用程序最高可以申请的内存和手机密切相关,比如我当前使用的华为Mate7,极限大概是200M,算比较高的了, 一般128M 就是极限了,
甚至有的手机只有可怜的16M或者32M,这样的手机相对于内存溢出的概率非常大了。
我们怎么检测内存泄露呢
首先需要明白一个概念,内存泄露就是指,本应该回收的内存,还驻留在内存中。一般情况下,高密度的手机,一个页面大概就会消耗20M内存,如果发现退出界面,程序内存迟迟不降低的话,可能就发生了严重的内存泄露。我们可以反复进入该界面,然后点击dump
java heap 这个按钮,然后Android Studio就开始干活了,下面的图就是正在dump
![](http://upload-images.jianshu.io/upload_images/1132780-7b6085de6f082879.png?imageMogr2/auto-orient/strip%7CimageView2/2)
正在dump
dump成功后会自动打开 hprof文件,文件以Snapshot+时间来命名
![](http://upload-images.jianshu.io/upload_images/1132780-65b2ff097ceda16e.png?imageMogr2/auto-orient/strip%7CimageView2/2)
内存分析结果
通过Android Studio自带的界面,查看内存泄露还不是很智能,我们可以借助第三方工具,常见的工具就是MAT了,下载地址 http://eclipse.org/mat/downloads.php ,这里我们需要下载独立版的MAT. 下图是MAT一开始打开的界面, 这里需要提醒大家的是,MAT并不会准确地告诉我们哪里发生了内存泄漏,而是会提供一大堆的数据和线索,我们需要自己去分析这些数据来去判断到底是不是真的发生了内存泄漏。
![](http://upload-images.jianshu.io/upload_images/1132780-f4974d8f4aa75267.png?imageMogr2/auto-orient/strip%7CimageView2/2)
MAT主界面
接下来我们需要用MAT打开内存分析的文件, 上文给大家介绍了使用Android Studio生成了 hprof文件, 这个文件在呢, 在Android Studio中的Captrues这个目录中,可以找到
![](http://upload-images.jianshu.io/upload_images/1132780-d1b42ee9101d8219.png?imageMogr2/auto-orient/strip%7CimageView2/2)
hprof目录]
注意,这个文件不能直接交给MAT, MAT是不识别的, 我们需要右键点击这个文件,转换成MAT识别的。
![](http://upload-images.jianshu.io/upload_images/1132780-bd3324047401b60f.png?imageMogr2/auto-orient/strip%7CimageView2/2)
导出标准的hprof
然后用MAT打开导出的hprof(File->Open heap dump) MAT会帮我们分析内存泄露的原因
![](http://upload-images.jianshu.io/upload_images/1132780-6c9c8639bb131edb.png?imageMogr2/auto-orient/strip%7CimageView2/2)
打开标准的hprof
![](http://upload-images.jianshu.io/upload_images/1132780-10748547ba059f3e.png?imageMogr2/auto-orient/strip%7CimageView2/2)
自动分析内存泄露的原因
LeakCanary
上面介绍了MAT检测内存泄露, 再给大家介绍LeakCanary。项目地址:https://github.com/square/leakcanaryLeakCanary
会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,也就是上边MAT用到的.hprof文件,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露.
![](http://upload-images.jianshu.io/upload_images/1132780-d48580f2577b60af.png?imageMogr2/auto-orient/strip%7CimageView2/2)
手机端查看内存泄露.png
使用:
在build.gradle文件中添加,不同的编译使用不同的引用:
dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' }
在应用的Application onCreate方法中添加LeakCanary.install(this),如下:
public class ExampleApplication extends Application @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } }
应用运行起来后,LeakCanary会自动去分析当前的内存状态,如果检测到泄漏会发送到通知栏,点击通知栏就可以跳转到具体的泄漏分析页面。Tips:就目前使用的结果来看,绝大部分泄漏是由于使用单例模式hold住了Activity的引用,比如传入了context或者将Activity作为listener设置了进去,所以在使用单例模式的时候要特别注意,还有在Activity生命周期结束的时候将一些自定义监听器的Activity引用置空。
关于LeakCanary的更多分析可以看项目主页的介绍,还有这里
http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
追踪内存分配
如果我们想了解内存分配更详细的情况,可以使用Allocation Traker来查看内存到底被什么占用了。用法很简单:![](http://upload-images.jianshu.io/upload_images/1132780-0244bebf7437f309.png?imageMogr2/auto-orient/strip%7CimageView2/2)
点击追踪内存分配
点一下是追踪, 再点一下是停止追踪, 停止追踪后 .alloc文件会自动打开,打开后界面如下:
![](http://upload-images.jianshu.io/upload_images/1132780-01804a7ff4472f96.png?imageMogr2/auto-orient/strip%7CimageView2/2)
追踪内存结构展示
当你想查看某个方法的源码时,右键选择的方法,点击Jump to source就可以了
查询方法执行的时间
Android Studio 功能越来越强大了, 我们可以借助AS观测各种性能,如下图:![](http://upload-images.jianshu.io/upload_images/1132780-b8e2a2b6826ffe10.png?imageMogr2/auto-orient/strip%7CimageView2/2)
检测性能界面
Android studio2.1 界面发生了变化,功能没有太大区别:
![](http://upload-images.jianshu.io/upload_images/1132780-d4013b5b63fb7cae.png?imageMogr2/auto-orient/strip%7CimageView2/2)
新版本界面
如果我们要观测方法执行的时间,就需要来到CPU界面
![](http://upload-images.jianshu.io/upload_images/1132780-9cdfc9784f6a27db.png?imageMogr2/auto-orient/strip%7CimageView2/2)
追踪方法耗时
点击Start Method Tracking, 一段时间后再点击一次, trace文件被自动打开,
![](http://upload-images.jianshu.io/upload_images/1132780-a66064f4a41d08fa.png?imageMogr2/auto-orient/strip%7CimageView2/2)
结果
非独占时间: 某函数占用的CPU时间,包含内部调用其它函数的CPU时间。
独占时间: 某函数占用CPU时间,但不含内部调用其它函数所占用的CPU时间。
我们如何判断可能有问题的方法?
通过方法的调用次数和独占时间来查看,通常判断方法是:如果方法调用次数不多,但每次调用却需要花费很长的时间的函数,可能会有问题。
如果自身占用时间不长,但调用却非常频繁的函数也可能会有问题。
综述
上面给大家介绍了若干使用Android Studio检查程序性能的工具,工具永远是辅助,不要因为工具耽误太长时间。如果有问题,欢迎大家纠正。最近开通了微信公众账号,大家捧场啊
![](http://upload-images.jianshu.io/upload_images/1132780-9499ace54735fef2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2)
微信公众账号:likeDev
Android实用技术
© 著作权归作者所有
举报文章
于连林520wcf
写了 62500 字,被 1268 人关注,获得了 2495 个喜欢
微信公众账号: likeDev
QQ学习群:488929846
Android电子书: http://book.520wcf.com 视频地址: http://youku.520wcf.com
CSDN博客地址:http://blog.csdn.net/yulianlin
更多精彩内容,关注微信公众账号likeDev,如果作品对您有所帮助,随意打赏
更多分享
![](http://cdn2.jianshu.io/assets/default_avatar/avatar_default-78d4d1f68984cd6d4379508dd94b4210.png)
后发表评论
35条评论 只看作者
按喜欢排序按时间正序按时间倒序
![](http://cdn2.jianshu.io/assets/default_avatar/15-a7ac401939dd4df837e3bbf82abaa2a8.jpg)
mrwangyong
6楼 · 2016.01.02 19:49
好东西,谢谢搂住
1人赞 回复
![](http://upload.jianshu.io/users/upload_avatars/746997/73c40b3daa6f.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
追风917
2楼 · 2015.12.27 05:40
不错
赞 回复
于连林520wcf:
@追风917 多谢支持了
2015.12.29 09:12 回复
还我漂漂拳哦:
@于连林520wcf 确实不错
2016.06.01 11:33 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/611087/cf25a1a395f7.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
MrFu
3楼 · 2015.12.27 17:26
棒极了
赞 回复
于连林520wcf:
@MrFu 班门弄斧了
2015.12.29 09:12 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/1392524/19c28c7f7a39.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
lo_android
4楼 · 2015.12.29 20:36
好东西
赞 回复
于连林520wcf:
@lo_android 谢谢支持
2015.12.30 07:42 回复
添加新评论
勤奋小喜子
5楼 · 2016.01.01 00:33
赞啊
赞 回复
![](http://upload.jianshu.io/users/upload_avatars/719051/f74516b4-f12f-4852-bac6-1fec58de90c6.jpeg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
小蛤蟆智
7楼 · 2016.04.09 11:11
好文。
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/4-3397163ecdb3855a0a4139c34a695885.jpg)
ChrisYuu
8楼 · 2016.04.15 14:42
请问怎么根据深度来定位哪里内存泄漏呢?
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/8-a356878e44b45ab268a3b0bbaaadeeb7.jpg)
孤独的树叶
9楼 · 2016.04.16 21:39
很好
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/14-0651acff782e7a18653d7530d6b27661.jpg)
黄盖突然
10楼 · 2016.04.28 13:41
收藏了
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/9-cceda3cf5072bcdd77e8ca4f21c40998.jpg)
QQ00001
11楼 · 2016.04.28 13:49
正在发愁的时候,搜索到了于大神的这篇文章
赞 回复
![](http://cdn2.jianshu.io/assets/default_avatar/12-aeeea4bedf10f2a12c0d50d626951489.jpg)
SwitchCase
12楼 · 2016.04.28 17:40
支持
赞 回复
于连林520wcf:
@SwitchCase 谢谢
2016.04.28 17:54 回复
添加新评论
![](http://upload.jianshu.io/users/upload_avatars/1992590/53b56e40e182.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
米阳MeYoung
13楼 · 2016.04.30 23:56
学习了
赞 回复
![](http://upload.jianshu.io/users/upload_avatars/650671/176b96065ac6.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/114/h/114)
微凉一季
14楼 · 2016.05.10 22:49
必须赞啊
相关文章推荐
- 使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- 性能优化:使用新版Android Studio检测内存泄露和性能
- 使用新版Android Studio检测内存泄露和性能
- Android Studio检测内存泄露和性能
- 为什么要使用内存泄露工具、性能检测工具
- Android性能优化(三)——Handler使用不当引起的内存泄露
- Android 使用LeakCanary 检测内存泄露
- 深度分析内存泄漏原因,使用MAT工具检测内存泄露和性能
- Android 性能优化之使用MAT分析内存泄露问题
- Android 性能优化之使用MAT分析内存泄露问题
- Android 性能优化之使用MAT分析内存泄露问题
- Android 性能优化之使用MAT分析内存泄露问题
- Android 使用LeakCanary 检测内存泄露
- Android 性能优化之使用MAT分析内存泄露问题
- Android 性能优化之使用MAT分析内存泄露问题