本文主要是介绍【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、什么是垃圾(Garbage)?
- 二、什么是可行性分析?
- 三、什么是GC Root对象?
- 四、引用关系有哪些?
- 五、什么时候进行垃圾回收?
- 六、垃圾收集算法
- 6.1 标记-清除(Mark-Sweep)
- 6.2 复制(Copying)
- 6.3 标记-整理/压缩(Mark-Compact)
- 6.4 分代收集(Generational Garbage Collection)
- 6.4.1 为什么需要使用分代收集策略?
- 6.4.2 代际划分
- 6.4.2.1 年轻代(Young Generation)
- 6.4.2.2 年老代(Old Generation)
- 七、GC日志
- 八、常见垃圾收集器
- 九、扩展阅读
垃圾回收(Garbage Collection, GC) 是Java和许多现代编程语言中的一个重要特性。
它自动管理内存,从而减少了手动内存管理的负担并降低了内存泄漏和非法内存访问的风险。
一、什么是垃圾(Garbage)?
在计算机科学中,垃圾(Garbage)
通常指的是那些程序不再需要使用并且无法访问的数据或对象
。
既然讨论的是”垃圾回收GC"
,那就必须知道哪些对象
是垃圾
。Java 虚拟机
中使用一种叫作可达性分析
的算法来决定对象是否可以被回收
。
二、什么是可行性分析?
可达性分析
算法是从离散数学
中的图论
引入的,
JVM
把内存中所有的对象
之间的引用关系
看作一张图
,
通过一组名为”GC Root"
的对象
作为起始点
,从这些节点开始向下搜索
,
搜索所走过的路径称为引用链
,最后通过判断对象的引用链
是否可达来决定对象是否可以被回收。
如下图所示:
这篇关于【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!