0 内存泄漏
-
LeakCanary工具
LeakCanary是大名鼎鼎的square出的一款开源的用来做内存泄露检测的工具
具体用法看上面链接,整体用下来就这一个就可以了,很强大! - 单例模式中内存泄露,比如static的context
- 注册的接口、观察者模式等add/remove没有成对出现导致的内存泄露
- cursor、file io等流接口忘记关闭导致的内存泄露
- Handler、AsyncTask等内部类导致的内存泄露
- bitmap回收,集合中对象回收,webview销毁等情况导致的内存泄露
1 内存优化
使用CPU GPU Memory Montor等AS自带工具,来时刻观察内存使用情况,使用HPROF Viewer & Analyzer来分析hprof文件
- java语法层面
比如String StringBuffer StringBuilder,“1” 不是来源对象就用String,否则StringBuilder,线程安全就是StringBuffer - 数据结构
SparseArray、LongSparseArray、ArrayMap等代替HashMap,前提是数据量不大在千个级别,因为避免了自动装箱,使用了二分查找等方法,所以效率高 - 根据业务情况选择数据结构
比如数据新增、删除比较多就用LinkedList,动态数据访问比较多就用ArrayList - 根据业务情况选择算法
普通遍历、二分查找、快排等 - 避免创建不必要的对象
比如循环中避免创建大量不可变对象,使用缓存来避免创建大量对象 - 尽量不用浮点型
- 未完待续
网友评论