文章目录
一、 内存优化总结
二、 常见的内存泄漏场景
三、 内存回收算法
四、 标记-清除算法 ( mark-sweep )
五、 复制算法
六、 标记-压缩算法
一、 内存优化总结
----
内存泄漏原理...、 常见的内存泄漏场景
----
内存泄漏的常见原因 :
集合的使用
静态成员
常量
单例模式 : 不要在单例中随便持有 Context , Activity 之类的成员 , 有极大的内存泄漏隐患 ;...没有释放或关闭的资源 : 如 IO 流 , Socket 等 ;
线程 : 界面退出 , 线程没有退出 , 线程持有的引用就泄漏了 ; 尽量在其中使用弱引用 ;
Handler : 非静态内部类造成内存泄漏..., 这样就会造成内存碎片 , 这些内存碎片中无法申请大块内存 ;
上图中的内存中 , 有 24 个格子的空闲内存 , 如果要申请
5
个单位格子的内存 , 发现无法申请 , 没有连续 5 个格子的内存...弊端 :
该垃圾回收算法缺陷也很明显 , 就是会浪费一半内存空间 ;
有些对象的声明周期等同于应用声明周期 , 如 Android 中的 Application 等 , 该内存对象根本不释放 , 持续往返复制这类长生存期的对象