Android内存回收机制、GC算法及内存问题分析解决
在Android开发中,Java内存回收和垃圾收集(GC)机制是确保应用程序高效运行的关键部分。针对不同对象存活率,Android平台采用了引用计数算法和可达性分析法来判定对象的可回收性,并使用分代收集算法来管理内存。
内存判定对象可回收的机制
-
引用计数算法:
- 该算法通过给对象添加引用计数器来判定其可回收性。当有地方引用对象时,计数器值加1;引用失效时,计数器值减1;计数器为0时,对象不再被使用。
- 主流Java虚拟机未选用此算法,因为难以解决对象之间相互循环引用的问题。
-
可达性分析法:
- 通过一系列称为『GCRoots』的对象作为起始点,向下搜索形成引用链。当对象到GC Roots没有任何引用链相连时,则证明该对象不可达,可以被回收。
- GC Roots包括虚拟机栈中引用的对象、本地方法栈中Native方法引用的对象、方法区中类静态属性引用