【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略

2024-06-16 07:20

本文主要是介绍【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回收机制与分代回收策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065811

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式