Android项目中的优化 -- 内存优化

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
  • 根据业务情况选择算法
    普通遍历、二分查找、快排等
  • 避免创建不必要的对象
    比如循环中避免创建大量不可变对象,使用缓存来避免创建大量对象
  • 尽量不用浮点型
  • 未完待续

你可能感兴趣的:(Android项目中的优化 -- 内存优化)