内存优化实例
bitmap优化
1.使用适当分辨率和大小的图片
2.及时回收内存
在使用完bitmap后一定要及时调用bitmap.recycle()来释放内存资源,但android3.0后bitmap被放到heap中,所以就不需要手动进行释放了
3.对图片进行缓存
使用内存缓存(LruCache)和硬盘缓存(DiskLruCache)可以更好的使用bitmap
4.在考虑到需求的情况下,可以对图片进行压缩
代码优化
1.对常量使用static修饰符
2.尽量减少成员变量
3.减少不必要的对象
4.少使用枚举和迭代器
5.对Cursor Receiver Sensor File等对象,要非常注意对他们的创建 回收和注册 反注册
6.避免使用IOC框架,因为注解对性能的损耗较大
7.使用RenderScript OpenGL来进行非常复杂的绘图操作
8.使用SufaceView来替代View进行大量频繁的绘制操作
9.尽量使用视图缓存,少使用inflate().
什么是内存
在android中的内存是指手机的ram
为了了解内存,需要引出几个概念
寄存器registers:在处理器的内部,是速度最快的存储场所,在程序中无法控制
栈stack:存放对象和基本类型数据的引用
堆heap:堆内存存放new创建对象和数组,由GC管理
静态存储区域static field:固定的位置存放应用程序运行时一直存在的数据,java在内存中专门划分了一个静态存储区域来管理一些特殊的数据变量;
常量池Constant pool:常量池就是该类型所用到的常量的一个有序集合
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
//获取堆大小的方法
int heapSize = activityManager.getLargeMemoryClass();
获取android系统内存信息
Process Stats
一种系统内存监视服务,可以通过手机中Setting>Developer options>Process Stats打开
也可以:
1.打开cmd
2.cd sdk的目录
3.adb start-service //打开adb服务
4.adb shell dumpsys procstats
Meminfo
手机:Settings>Apps>Running
也可以:
adb shell dumpsys meminfo
GC
即使调用了System.gc(),也只是建议进行回收.