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  
  • 相关阅读:
    SCOI 2012 滑雪与时间胶囊
    TYVJ P1730 二逼平衡树
    CDQZ_Training 20120524 词编码
    VC++学习笔记之消息处理机制和窗口过程函数
    项目管理本质论
    VC++学习笔记之创建窗口
    C++随笔(二)
    SqlServer的那些常用操作(一)
    C++随笔(一)
    Silverlight游戏开发学习笔记(二)
  • 原文地址:https://www.cnblogs.com/jooy/p/9048720.html
Copyright © 2011-2022 走看看