Android App性能优化之内存优化
来源:Android开发学习网 2017-04-12今天的Android开发栏目要和大家分享的是Android App性能优化中内存优化的一些知识。为什么要进行内存优化呢?如果不进行内存优化会产生什么样的问题?
Android App的运行是有内存限制的,超过限制会产生OOM,导致App崩溃。如果不进行内存优化,一旦运行的内存超出了这个限制,就会导致程序的崩溃。程序的崩溃对于应用程序来说是一个非常严重的。如果不对Android App进行内存优化,在流畅性、响应速度和用户体验上都会有很差的效果。
首先,我们来看一下Android系统内存的管理方式。
1、Android系统的内存分配和回收方式。
一个App通常就是一个进程对应一个虚拟机。GC只在heap剩余空间不足时,才会进行垃圾回收。GC触发时,所有的线程都会被暂停。
2、App内存限制机制。
每个App分配的大内存限制,随着不同的设备而不同。吃内存大户是图片。App中用到的图片也很多。为什么要限制内存呢?我们的手机上有很多个应用。如果一个App把内存用光了,别的App就没有办法运行了。为了避免这种情况的出现,我们必须要限制App的内存。
3、切换应用时后台App清理机制。
App切换时的LRU Cache的方式进行应用间的切换。清理的时候系统会调用onTrimMemory()回调方法。
4、监控内存的几种方法。
其次,Android App内存的优化方法。
1、数据结构优化。
频繁字符串拼接用StringBuilder。ArrayMap、SparseArray替换HashMap。内存抖动。再小的class也要消耗0.5kb。HashMap一个entry需要额外占用32b。
2、对象复用。
复用系统自带的资源。ListView和GridView 的ConverView复用。避免在onDraw方法里执行对象的创建。
3、什么是内存泄漏,及其应对方法。
在逻辑上,某个内存块已经不用了。由于代码上的失误导致这块内存虽然停止不用了,但是依然被其他东西占用,使得GC无法对它进行回收。
内存泄漏会导致可用的Heap越来越少,频繁触发GC。尤其是Activity泄漏。用Application Context而不是Activity Context。注意Cursor对象是否及时关闭。
后,OOM问题优化。
1、OOM问题分析。
必然性和可解决性。OOM绝大部分出现在图片上。
2、强引用、软引用的意义。
3、优化OOM问题的方法。
注意临时Bitmap对象的及时回收。避免BitMap的浪费。Try catch某些大内存的分配。加载Bitmap时候缩放比例、解码格式、局部加载。
以上就是Android App性能优化之内存优化的一些知识,相信大家已经知道了内存优化的重要性,也掌握了一定的Android APP内存优化方法,那么赶紧动起手来,提升一下你的APP性能吧。
Copyright ©2004-2018 华清远见教育科技集团 版权所有
京ICP备16055225号,京公海网安备11010802025203号