Java垃圾回收机制

JVM概括

JVM的主要职责就是从持久化存储上(一般指的是硬盘),加载,识别,解析,存储类文件,并且可以正确的运行这些类文件,还可以有效管理类代码执行过程中的内存管理。

在这里插入图片描述

GC

主要职责:管理内存的分配,管理内存的回收

GC回收以对象为单位进行回收,一个对象要存在就完整存在,要释放就完整释放

垃圾回收主要回收堆区
内存划分为 堆区,栈区,方法区,pc, 常量池
关于pc,栈区----->主要和线程挂钩,线程在,这块内存就一定有用,不能回收,反之回收
关于方法区和常量池:可以别gc管理,但是性价比不高,类信息加载到内存中后,很少失去作用,很少被回收,常量池也同理。
1.判断哪些内存可以回收,哪些不可以------------判断谁是垃圾
  1. 引用计数法 每个对象设置一个计数器,创建一个引用 计数器+1,销毁一个引用 计数器-1,如果计数器==0 则代表它是垃圾了。
    在这里插入图片描述
    但是不能解决循环引用的情况
    在这里插入图片描述

  2. 可达性分析法
    这部分引用/对象 称为GC Roots ----------->GC过程中可达性分析 遍历的图的根部们
    在这里插入图片描述
    可达性分析就是 从所有的GC Roots开始是遍历图,被遍历到的结点标记为活着的,整个过程 没有遍历到的结点就是死得。

细节:如果在GC过程中 可达性分析之中,后,对象的引用关系发生了变化,造成对象回收错误
在这里插入图片描述
所以通常在GC过程中,会停止应用线程的执行。(STW)

在这里插入图片描述

2.释放要回收的内存,同时尽可能保障,之后的申请比较容易
  1. 标记-清除算法
    把垃圾标记起来,GC的时候统一清除, 这样会造成内存产生内存碎片,不利于内存的利用
    为了清除后的内存具有条理,就有下面方法

  2. 标记-整理算法
    在这里插入图片描述
    虽然不会产生内存碎片,但是时间消耗大

  3. 标记–复制
    在这里插入图片描述
    将内存分为相等的两部分,只能用一部分, 把活着的对象复制到另一边,
    缺点:每次只能用内存的一边适用范围:大部分的对象都要死

所以需要把对象分为不同的情况按照不同的方法去清理------分代回收

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

类加载

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

内容概要:本文档是详尽的 Android SDK 中文帮助文档,介绍了 Android SDK 的核心概念、组件、开发环境搭建、基础开发流程及常用工具使用指南。首先解释了 Android SDK 的定义及其核心价值,即提供标准化开发环境,使开发者能高效构建、测试、优化 Android 应用。接着详细列出了 SDK 的核心组件,包括 Android Studio、SDK Tools、Platform Tools、Build Tools、Android 平台版本和系统镜像。随后,文档提供了详细的环境搭建步骤,适用于 Windows、macOS 和 Linux 系统,并介绍了基础开发流程,以“Hello World”为例展示了从创建项目到运行应用的全过程。此外,还深入讲解了 ADB、AVD Manager 和 SDK Manager 等核心工具的功能和使用方法。最后,文档涵盖了调试与优化工具(如 Logcat、Profiler 和 Layout Inspector)、关键开发技巧(如多版本 SDK 兼容、Jetpack 库的使用和资源文件管理)以及常见问题的解决方案。 适合人群:具有初步编程知识,希望深入了解 Android 应用开发的开发者,尤其是新手开发者和有一定经验但需要系统化学习 Android SDK 的技术人员。 使用场景及目标:①帮助开发者快速搭建 Android 开发环境;②指导开发者完成基础应用开发,理解核心工具的使用;③提高开发效率,掌握调试与优化技巧;④解决常见开发过程中遇到的问题。 阅读建议:此文档内容全面且实用,建议读者按照章节顺序逐步学习,结合实际开发项目进行练习,尤其要注意动手实践环境搭建和基础开发流程,同时参考提供的扩展学习资源,进一步提升开发技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值