星空网 > 软件开发 > 操作系统

android 性能分析案例

    本章以实际案例分析在android开发中,性能方面的优化和处理。设计到知识点有弱引用,memory monitor,Allocation Tracker和leakcanary插件。

1.测试demo

    下载bug项目:https://github.com/lzyzsd/MemoryBugs,请注意配合使用MemoryMonitor, AllocationTracker以及HeapDump,LeakCanary等工具来查找潜在的内存问题,并尝试解决。

2.测试工具介绍

(1)memory monitor简介

    AndroidStudio提供了Memory Monitor来实时显示应用运行时内存占用情况,下边蓝色部分是现在占用的内存,上面灰色的部分显示是已回收的内存。如果在图上看到尖峰,也就是快速分配内存又被回收,也就是发生了内存抖动,这里就是需要优化的地方。在模拟器或者真机中Debug项目,可实时监看Memory,CPU,NetWork等的资源占用情况。

android 性能分析案例images/loading.gif' data-original="data:image/png;base64,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

(2)Allocation Tracker简介

    单击Allocation tracker标签,就会打开一个新的窗口,单击“Start Tracing”按钮;然后,让应用运行你想分析的代码。运行完毕后,单击“Get Allocations”按钮,一个已分配对象的列表就会出现第一个表格中。

单击第一个表格中的任何一项,在表格二中就会出现导致该内存分配的栈跟踪信息。通过allocation tracker,不仅知道分配了哪类对象,还可以知道在哪个线程、哪个类、哪个文件的哪一行。查看方式如下:

android 性能分析案例seouuHa1sPi6zeVZXw2HgquhUHhjPSJdXsjLvXT5cl5n/1CKZRTSheJr+a09QxubW0GPs/xGad7lSy1tXfHtxJ26qivXrvJFEiaRmBkZVci1PqetuCCvoromEF5zOenyousFJTdMBGSYra7WNpPFUH795uXLecU3yuwrzrWgt6H21qWr11QGy8Z6JBQKh4Lh1dWNaHS1vbX58uWcvPzCrXiSshqLCs717XcAACAASURBVArLqmo8fh9hMvV0D7AsxiyrkghNEKbYRENV1ZXLV+b4i1uJpJA3LZgXDfR15126kp+XL5Ao/G57Ud7Vq1eu8ReXcXJrsKtHrZI11FVVVpSXV9Sq9Ib+ru5g0Dcy8mh13d96937OpcsTPAHLYoNWlpeTV1XTENt5byX9Ns32NvdKSyKRSCaTL+jtQQjhisBka9W4e8HWEIgMk7FBsNELY80qn8Rsg5BCkKBI8tHAICSQRCI1msHoxOgSf7Gupr6jve3u/Wbhwrx4STY/NSFTaS16/cjo2OTYqFypg9BGQTDY3anSWGfGR2tqbvUPTRNGfWdLa//QyPjwI6PRSlh0HW09RqOZIq39QwOElRju7Ghq76CtZNb587MCCQHI8f4hgUhSejlndHKxtaml6WHTw3sPF8WypcWFR6PjCFDSJVFtXW1XW+f9xmbuvdPdupnNZoTQ3hMhI3s7wQFSECA9oB+pUKfW127aaDVHOnT+YSWpIR6/IIAQommapmmKoiGECEKaQhRNI0QhhCiKQhSiaZqmaG4jRSGEIIUoiqLQzuMoiqIRRDRFURSFEEVBmF6guGFbiKIomB4qSEFIUYiiKMibGGtsbiMgRQGglC6XFhRW3ao3WyGiaArRNKIRhBSFEKIghBRC3GGIouDL8SM3Ob1e71MRcO9NTq5GXGIKQYQoGiGIEI0oyL3URaWrljaMphFCFEIURdMUhRBNobRPuIrvegZCmHYFQghRFIIUomiKUshlVZXltyqqKitvzc7yEKIpmqYoGiEKArBTcRpCQO20F0QUgpBrI+7tHpqiOYN3vISoHau4938oiuYOp9LNzbURomlktZiqqm5VVt6qqqoeGByCENE0V5u0zZz9nNGc5TRN0bQNIQrtJNgxg+JsgxBSFOI8ttcDNEXtNYNKuwJBRO2m5LJK24d+cMTLs/zQm5zhcBg/w+rqKsMwO2/P7wy22/mTHm2WHrq2Z1ACxizLpnAqld66O9gtPdiOe1jHsrvD4nbyTaVSKZZLGI/H7jbUFxQUFhQUP3jYlsLpl/h3RtixDJNkd8bNpfDjoXgsk0wyzOOMcSqFMcswTLo0zDIMk06QHqm3k+mu8UySYZLJRH9fb2HBtcKCwtu376+traVLSTuDZdJ5PvmKZXrEA8Ysm0wmHw8h5GzfLQhjlmH3msFVHO8M2dspKz0mkXnsKhY/MTzhxTxP9hAClBVSAgPqUtg6jOF200abYbVLaRMb6ceJuDAFEUIIQoQoRHEnHvfNf/y1RHu+4engQ1Pp4ERRFEXZEIT0zlkKIUIQUFT6Qu1xBKDpZZG4trrWCmiAoB2QpUVFV69cNZisiKYQTVE0DSHizt/0WUPTVDqKPnEn/4f4tcseAiT3phACwEA5RWY7T0fN6OlFk92AXAC+WDn2DoDjeBm/vwQgHcIAsCEIKRqi9MMkiiAp2p627eco6rmyx3UQNRqNwWB4yoNPPRr8cZ71z48n/rH0AFAIOFZsjpWVFYeTou3gyQEcP5Pnn2PX7mhcBMmVFcfKisPhcNps9p8y5OKXxXNlL5VKBYPBlWfweDxsesz1qwazDGYZlsUsTjGvwwSMmZ1/mP2JSvOL4gd6ewBCaEW0gnDMGWwzOmpBTysJpxU5X/4S6mcHQUhTNDf4gQIkBQF.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

    圆心是起点处,如果你把鼠标放到我图中标注的区域,会在右边显示当前指示的是什么线程(Thread1)以及具体信息(分配了8821次,分配了 564.18k的内存),但是红框标注的区域并不代表Thread1,而是第一个同心圆中占比最大的那个线程,所以现在把鼠标放到第一个同心圆上,可 以看出来,划过同心圆的轨迹时可以看到右边的树枝的变化情况。

3.案例分析

(1)内存波动

    内存波动指不合理的设计,在一瞬间创建了多个对象,有及时释放时产生影响内存性能的现象。案例中的问题代码如下:

android 性能分析案例

    执行代码引起内存波动的分析图如下:

android 性能分析案例

(2)线程致使内存泄露

    Android中使用Handler造成内存泄露的例子代码如下:

1 Handler mHandler = new Handler() {2   @Override3   public void handleMessage(Message msg) {4     mImageView.setImageBitmap(mBitmap);5   }6 }

 泄露原因分析

    上面是一段简单的Handler的使用。当使用内部类(包括匿名类)来创建 Handler的时候,Handler对象会隐式地持有一个外部类对象(通常是一个Activity)的引用(不然就不可能通过Handler来操作 Activity中的View)。而Handler通常会伴随着一个耗时的后台线程(例如从网络拉取图片)一起出现,这个后台线程在任务执行完毕(例如 图片下载完毕)之后,通过消息机制通知Handler,然后Handler把图片更新到界面。然而,如果用户在网络请求过程中关闭了Activity,正常情况下,Activity不再被使用,它就有可能在GC检查时被回收掉,但由于这时线程尚未执行完,而该线程持有Handler的引用,这个Handler又持有Activity的引用,就导致该Activity无法被回收(即内存泄露),直到网络请求结束(例如图片下载完毕)。另外,如果你执行了Handler的postDelayed()方法,该方**将你的Handler装入一个Message,并把这条 Message推到MessageQueue中,那么在你设定的delay到达之前,会有一条MessageQueue -> Message -> Handler -> Activity的链,导致你的Activity被持有引用而无法被回收。

内存泄露的危害
    内存泄露会出现虚拟机占用内存过高的危害,导致OOM(内存溢出),程序出错。对于Android应用来说,用户打开一个Activity,使用完之后关闭它,内存泄露;又打开,又关闭,又泄露;几次之后,程序占用内存超过系统限制,致使程序崩溃。使用Handler导致内存泄露的解决方法如下:

  • 通过程序逻辑来进行保护

    1.在关闭Activity的时候停掉你的后台线程。线程停掉了,就相当于切断了Handler和外部连接的线,Activity自然会在合适的时候被回收。
    2.如果Handler是被delay的Message持有了引用,使用相应的Handler的removeCallbacks()方法,把消息对象从消息队列移除就行了。

  • 将Handler声明为静态类

    静态类不持有外部类的对象,所以Activity可以随意被回收。代码如下:

1 static class MyHandler extends Handler {2   @Override3   public void handleMessage(Message msg) {4     mImageView.setImageBitmap(mBitmap);5   }6 }

     声明静态类后,由于Handler不再持有外部类对象的引用,导致程序不允许该Handler去操作Activity中的对象了。解决方法是在Handler中增加一个对Activity的弱引用(WeakReference)。参考代码如下:

 1 static class MyHandler extends Handler { 2   WeakReference<Activity > mActivityReference; 3   MyHandler(Activity activity) { 4     mActivityReference= new WeakReference<Activity>(activity); 5   } 6  7   @Override 8   public void handleMessage(Message msg) { 9     final Activity activity = mActivityReference.get();10     if (activity != null) {11       mImageView.setImageBitmap(mBitmap);12     }13   }14 15 }

WeakReference简介
    WeakReference 弱引用,与强引用(即我们常说的引用)相对,它的特点是,GC在回收时会忽略掉弱引用,即就算有弱引用指向某对象,但只要该对象没有被强引用指向(实际上多数时候还要求没有软引用,但此处软引用的概念可以忽略),该对象就会在被GC检查到时回收掉。对于上面的代码,用户在关闭Activity之后,就算后台线程还没结束,但由于仅有一条来自Handler的弱引用指向Activity,所以GC仍然会在检查的时候把Activity回收掉。这样,内存泄露的问题就不避免了。

    案例中存在hander内存泄露的代码截图如下:

android 性能分析案例

android 性能分析案例

    通过上一章介绍的leakcanary插件,可检查到内存泄露相关的代码,leakcanary检查运行截图如下:

android 性能分析案例

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

中国货物运到泰国:https://www.goluckyvip.com/tag/88080.html
宁波到泰国物流专线:https://www.goluckyvip.com/tag/88081.html
从国内发货到泰国:https://www.goluckyvip.com/tag/88082.html
什么物流可以到泰国:https://www.goluckyvip.com/tag/88083.html
发到泰国物流:https://www.goluckyvip.com/tag/88084.html
发物流到泰国:https://www.goluckyvip.com/tag/88085.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
泰国签证有出生地 泰国出生入籍护照:https://www.vstour.cn/a/411245.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流