zoukankan      html  css  js  c++  java
  • Android内存优化相关

    Android的内存管理方式

    • Android系统内存分配与回收方式
      • 一个APP通常就是一个进程对应一个虚拟机
      • GC只在Heap剩余空间不够时才去垃圾回收
      • GC触发时,所有线程都会被暂停!!!
    • APP内存限制机制
      • 每个App分配的最大内存限制,随设备不同而不同
      • 吃内存大户:图片
      • 为什么要限制?
    • 切换应用时后台APP清理机制
      • APP切换时的LRU Cache
        • LRU算法:最近使用的排在最前面,最少的可能被清理掉
      • GC时,清理时会执行onTrimMemory()回调方法

    Android系统内存分配与回收方式

      adb shell : 进入Android底层Linux系统命令;

      ps :查看系统里面进程的命令;

      dumpsys meminfo com.xxx.xxx :查看进程的相关信息

    APP内存优化方法

    • 数据结构
      • 频繁字符串拼接用StringBuilder
      • ArrayMap、SpareArray替换HashMap
      • 内存抖动
      • 再小的Class耗费0.5KB
      • HashMap一个Entry需要额外占用的32KB
    • 对象复用
      • 复用系统自带的资源
      • ListView/GridView的convertView复用
      • 避免在onDraw()方法里面执行对象的创建
    • 避免内存泄漏
      • 由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其他东西引用着,导致GC无法回收它
      • 内存泄漏会导致剩余可用Heap越来越少,频繁触发GC  
  • 相关阅读:
    第一课 进阶高手的大门
    Codeforces Round #363 (Div. 2) C. Vacations
    HDU 5718 Oracle
    A
    Fibonacci数的后9位
    UESTC 982质因子分解
    UESTC149 解救小Q
    UESTC93 King's Sanctuary
    HDU 4857 逃生
    L1-006. 连续因子
  • 原文地址:https://www.cnblogs.com/jooy/p/9048720.html
Copyright © 2011-2022 走看看