关于内存相关的梳理

1 关键字 总结

(lowmemory,anr in)


2 知识储备

   虚拟机原理   
  垃圾回收算法 又包含标记 和清除两种算法
  标记:程序计数器-已过时,可达性分析
  具体可见 http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%2Fgcroots.html&cp=37_2_3
  清除:标记-清除算法 ( mark-sweep ),复制算法,标记-压缩算法,分代收集算法,(老年代和新生代)

  个人总结:

  哪些是虚拟机能自动回收的,哪些是需要我们注意的呢
  1 native相关的还是需要手动释放(bitmap,jni传过来的相关的对象)
  2 一个类里面的成员变量,非静态内部类有没有被更长的生命周期对象引用,没有则可以自动被回收,比如图中的现象1


   3 一个类的非静态内部类(只要能访问父类的私有变量的都默认引用了父类)由于默认引用了父类,也相当于父类的一部分,因此内部类的成员变量也要符合父类的上述要求,否则导致父类生命无法正常释放
  这类现象比较常见又比较隐蔽
  比如 activity被handler(内部类)持有,handler又被message持有,所以导致message未处理完activity也无法释放的现象。
  再比如 起一个内部类线程,线程没处理完,父类就无法释放。


3 实例总结分类

   监测类(动态内存检测比如抖音的xxx,activity fragment监测比如leakcanery,慢函数,卡顿检测比如腾讯的matrix,启动优化监测等)
   缓存类:LruCache,glide 的三级缓存,recycleview的四级缓存
   
接下来要对这些分类进行进一步了解,目前还没到掌握,只是了解的程度,然后再写下个人总结吧。

相关推荐

  1. android关于adb相关命令梳理

    2024-02-16 10:04:02       14 阅读
  2. 关于Jupyter相关问题

    2024-02-16 10:04:02       10 阅读
  3. Vue2源码梳理关于vm.$mount实现

    2024-02-16 10:04:02       26 阅读
  4. 导航相关知识梳理

    2024-02-16 10:04:02       38 阅读
  5. 【嵌入式 - 关于MCU内存分配】

    2024-02-16 10:04:02       9 阅读
  6. 深度学习相关概念梳理

    2024-02-16 10:04:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-16 10:04:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-16 10:04:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-16 10:04:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-16 10:04:02       18 阅读

热门阅读

  1. LeetCode474. Ones and Zeroes——动态规划

    2024-02-16 10:04:02       32 阅读
  2. QT-通信编码格式问题

    2024-02-16 10:04:02       29 阅读
  3. 面向对象和面向过程

    2024-02-16 10:04:02       31 阅读
  4. oracle dbms_job 写法

    2024-02-16 10:04:02       29 阅读
  5. Transformer?

    2024-02-16 10:04:02       26 阅读
  6. 程序员为什么不喜欢关电脑?

    2024-02-16 10:04:02       30 阅读