本篇文章主要介绍了"学习笔记】Android性能优化----->内存优化",主要涉及到方面的内容,对于移动开发感兴趣的同学可以参考一下:
代码写久了,就得开始考虑性能及架构的事情了 内存优化: Android采用沙箱机制,每个应用所分配的内存大小是有限的,内存太低就会触发LMK----->...
- Process Stats
可以通过"Setting-Developer options - Process Stats"(设置->开发者选项->进程统计信息)来开启该功能的界面,


同时,也可以使用Dumpsys命令来获取这些信息,命令如下:
adb shell sumpsys procstats
- Meminfo

- 内存回收
Java有垃圾收集器线程(Garbage Collection Thread)来自动进行资源的管理。
大大降低了程序开发人员对内存管理的繁琐工作。
但也带来了很多问题,系统自动进行GC,但是何时进行却是开发者无法控制的,即使调用System.gc()方法,也只是建议系统进行GC,
但系统是否采纳你的建议,那就不一定了。
JVM虚拟机虽然能够自动控制GC,但是再强大的算法,也难免会存在部分对象忘记回收的现象发生,这就是造成内存泄露的原因。
- 内存优化实例
Bitmap优化
BitMap是造成内存占用过高甚至是OOM(Out of Memory)的最大威胁,下面给出一些使用Bitmap的小技巧
1、使用适当分辨率和大小的图片
由于Android系统在做资源适配的时候,会对不同分辨率文件夹下的图片进行缩放来适配相应的分辨率,如果图片分辨率与资源文件夹分辨率不匹配 或者 图片分辨率 太高,
就会导致系统消耗更多的内存资源。同时,在适当的时候,应该显示合适大小的图片,
例如在图片列表界面,可以使用图片的缩略图,而在详细图片的时候再显示原图;
或者在对图像要求不高的地方,尽量降低图片的精度。
2、及时回收内存
一旦使用完Bitmap后,一定要及时使用bitmap.recycle()方法释放内存资源。自Android3.0之后,由于Bitmap被放置到了堆中,其内存由GC管理,就不需要进行释放了。
3、使用图片缓存
通过内存缓存(LruCache)和硬盘缓存(DiskLruCache),可以更好地使用Bitmap.
代码优化:
任何Java类,都将占用大约500字节的内存空间。创建一个类的实例会消耗大约15字节的内存。从代码的实现上,也可以对内存进行优化:
1、对常量使用static修饰符
2、使用静态方法,静态方法比普通方法提高15%左右的访问速度
3、减少不必要的成员变量,这点在Android Lint工具上已经集成检测了,如果一个变量可以定义为局部变量,则会建议你不要定义为成员变量。
4、减少不必要的对象,使用基础类型会比使用对象更加节省资源,同时更应该避免频繁创建短作用域的变量
5、尽量不要使用枚举、少用迭代器
6、对Curcor、Receiver、Sensor、File等对象,要非常注意对它们的创建、回收和注册、解注册
7、避免使用IOC框架,IOC通常使用注解、反射来进行实现,虽然现在Java对反射的效率已经进行了很好的优化,但大量使用反射依然会带来性能的下降
8、使用RenderScript、OpenGL来进行非常复杂的绘图操作
9、使用SurfaceView来替代View进行大量、频繁的绘图操作
10、尽量使用视图缓存,而不是每次都执行inflate()方法解析视图
- AndroidLint工具

看代码编辑器右边的提示,哇塞,原来这么多,我得去琢磨修改下自己的代码了。。。
以上就介绍了学习笔记】Android性能优化----->内存优化,包括了方面的内容,希望对移动开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_331705_2.html