android 内存管理以及优化 粗略方案
2017-07-27 11:13
225 查看
Android的内存管理方式
1.android系统内存分配和回收方式
一个app通常就是一个进程对应一个虚拟机
通过adb shell 查看应用的内存分配情况
①通过ps来查看系统内的进程
②通过 dumpsys meminfo 包名 查看对应的应用的内存分配情况
GC只在heap剩余空间不够的时候才触发垃圾回收,GC触发的时候,所有的线程都是会被暂停
2.app内存限制机制
每一个app分配的最大内存限制,随着不同的设备而不同
吃内存大户:图片
为什么要限制:为了平衡所有的app能够正常运行
3.切换应用时后台app清理机制
App切换的时候的LRU Cache
onTrimMemory()回调方法
4.监控内存的几种方法
AS代码
Float totalMemory = Runtime.getRuntime().totalMemory()
AS工具 Tools ->Android -> Android device monitor
需要注意的是data object 和 class object的数据
APP内存优化方法
1.数据结构优化
频繁字符串拼接用StringBuilder 性能相差不止一点....StringBuilder的拼接碾压String的拼接
Arraymap,SparseArray替换HashMap
内存抖动(影响流畅性)
再小的Class耗费0.5KB
HashMap一个entry需要额外占用32B
2.对象复用
复用系统自带的资源
ListView/GridView的ConvertView复用
避免在onDraw方法里面执行对象的创建
3.避免内存泄漏
由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其他东西引用着,使得GC没法对它进行回收
内存泄漏会导致剩余可用的Heap越来越少,GC越来越频繁,影响流畅性
尤其Activity泄漏
用Application Context而不是Activity Context
4.OOM问题优化
OOM的必然性和可解决性
OOM的绝大部分发生在图片
强引用和软引用的意义
5.优化OOM的方法
注意临时Bitmap对象的及时回收
避免Bitmap的浪费
Try Catch某些大内存分配的操作
加载bitmap:缩放比例,解码格式,局部加载
1.android系统内存分配和回收方式
一个app通常就是一个进程对应一个虚拟机
通过adb shell 查看应用的内存分配情况
①通过ps来查看系统内的进程
②通过 dumpsys meminfo 包名 查看对应的应用的内存分配情况
GC只在heap剩余空间不够的时候才触发垃圾回收,GC触发的时候,所有的线程都是会被暂停
2.app内存限制机制
每一个app分配的最大内存限制,随着不同的设备而不同
吃内存大户:图片
为什么要限制:为了平衡所有的app能够正常运行
3.切换应用时后台app清理机制
App切换的时候的LRU Cache
onTrimMemory()回调方法
4.监控内存的几种方法
AS代码
Float totalMemory = Runtime.getRuntime().totalMemory()
AS工具 Tools ->Android -> Android device monitor
需要注意的是data object 和 class object的数据
APP内存优化方法
1.数据结构优化
频繁字符串拼接用StringBuilder 性能相差不止一点....StringBuilder的拼接碾压String的拼接
Arraymap,SparseArray替换HashMap
内存抖动(影响流畅性)
再小的Class耗费0.5KB
HashMap一个entry需要额外占用32B
2.对象复用
复用系统自带的资源
ListView/GridView的ConvertView复用
避免在onDraw方法里面执行对象的创建
3.避免内存泄漏
由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其他东西引用着,使得GC没法对它进行回收
内存泄漏会导致剩余可用的Heap越来越少,GC越来越频繁,影响流畅性
尤其Activity泄漏
用Application Context而不是Activity Context
4.OOM问题优化
OOM的必然性和可解决性
OOM的绝大部分发生在图片
强引用和软引用的意义
5.优化OOM的方法
注意临时Bitmap对象的及时回收
避免Bitmap的浪费
Try Catch某些大内存分配的操作
加载bitmap:缩放比例,解码格式,局部加载
相关文章推荐
- Android中Exif的操作以及Camera应用中相关代码优化方案
- 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案
- Android内存泄露分析以及优化方案
- Android中Exif的操作以及Camera应用中相关代码优化方案
- Android应用内存泄露分析以及优化方案
- [置顶] 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案
- WinCE5.0 内存管理以及优化方案
- Android UI优化方案
- Android -- 重写BaseAdapter以及对ListView的优化
- Android热更新方案之阿里AndFix 原理以及源码解析
- Android优化方案之Fragment的懒加载实现代码
- Android—ListView 的使用以及简单优化
- [置顶] Android开发之ListView详解 以及简单的listView优化
- baseAdapter出现IllegalStateException错误的问题,以及优化方案
- android面试(20)-内存管理以及内存泄漏
- android TraceView使用以及listview 的性能优化测试(二)
- Android布局的优化方案汇总
- Android之内存管理及优化-干货
- Android性能优化的一些方案
- Android 下分批加载数据以及listView使用过程中的优化