java垃圾回收机制详解

2023-11-07


一、垃圾回收机制是什么?

Java的垃圾回收(Garbage Collection,GC)机制是Java内存管理的核心部分,它可以自动回收不再被程序使用的内存空间,防止内存泄漏和崩溃等问题,是Java语言的一个重要特性。

二、机制运行原理

垃圾回收机制通过一个被称为垃圾收集器(Garbage Collector)的程序来实现,它使用Mark and Sweep算法定期自动扫描内存中的对象,然后把不再被使用的对象标记为垃圾。接下来,垃圾收集器会将这些垃圾对象所占用的内存空间释放掉,以便给其他对象使用。

将对象标记为垃圾有引用计数法和可达性分析法两种方式。引用计数法是通过计算对象被引用的次数来判断是否应该标记,如果引用计数为0,则认为是垃圾。可达性分析法则是通过判断对象是否能够被其他对象所引用来判断是否是垃圾,如果一个对象不再被任何其他对象所引用,则认为是垃圾。

三、机制运行步骤

假设我们有如下的Java代码:

public class Example {
    public static void main(String[] args) {
        Person person = new Person("John");
        person = null;
    }
}

class Person {
    String name;
    public Person(String name) {
        this.name = name;
    }
}

在上述代码中,我们创建了一个Person对象并赋值给person变量。然后我们把person变量设为null。当person被设为null时,原本的Person对象就不再有任何引用指向它,因此它就成为了垃圾,可以被回收。

1. 标记:垃圾回收器会识别出那些对象不再被引用,标记出这些对象。在我们的例子中,垃圾回收器会发现`Person`对象不再被`person`引用,因此会被标记为垃圾。

2. 删除:垃圾回收器会删除标记为垃圾的对象,释放它们占用的内存。在我们的例子中,`Person`对象会被删除,它占用的内存会被释放。

3. 整理:垃圾回收器会整理内存空间,把剩余的对象移动到内存的一端,以便能连续分配内存。在我们的例子中,如果有其他对象存在,垃圾回收器会将它们移动到内存的一端。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java垃圾回收机制详解 的相关文章

随机推荐

  • 牛客SQL进阶:【字符串的切割、截取、删除、替换】+【窗口函数】

    本文总结了牛客SQL刷题 非技术快速入门的进阶知识 阅读本文可以轻松解决这个系列下的难题 SQL30 统计每种性别的人数 SQL31 提取博客URL中的用户名 字符串拆分 有分隔符 字符串拆分 无分隔符 SQL32 截取出年龄 SQL33
  • vue3对echarts的二次封装之按需加载

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 效果展示 1 echarts是我们后台系统中最常用的数据统计图形展示 外界对它的二次封装也不计层数 2 在业务代码内每次的初始dom和绑定se
  • np.eye()函数

    np eye 的函数 除了生成对角阵外 还可以将一个label数组 大小为 1 m 或者 m 1 的数组 转化成one hot数组 例如它可以将类别总数为6的labels 1 2 3 0 1 1 的数组转化成数组 0 1 0 0 0 0 0
  • Android 执行 gradle test 出错: JAVA_HOME is not set and no 'java' command could be found in your PATH.

    AndroidStudio Terminal控制台 执行 gradle test 出错 JAVA HOME is not set and no java command could be found in your PATH 找到JDK和g
  • Linux下使用gtest对接口进行单元测试

    目录 1 背景 2 gtest 断言 2 1 布尔值判断 2 2 二进制比较 2 3 字符串比较 2 4 浮点数比较 3 实践 3 1 框架使用 3 2 用例编写 3 3 编译运行 4 结论 1 背景 工程中涉及基础接口的设计 为了保证接口
  • pytorch学习笔记——2.5Pytorch中数据操作和预处理

    前言 在torch utils data模块中包含一些常用的数据预处理的操作 比如数据的读取 切分 准备等 通过使用这些类 我们可以对高维数组 图像等各种类型的数据进行预处理 以便在深度学习模型中使用 在本文中 我们主要介绍回归模型和分类模
  • Window.iso镜像文件下载

    Window iso镜像文件下载 https www microsoft com zh cn software download windows10 Window iso官网下载地址 一 使用MediaCreationTool20H2官方工
  • MCU(单片机)datasheet(规格说明书)

    STC 宏晶 型号 程序容量 datasheet STC8G2K64S4 36I QFN48 64K 规格说明书链接 https pan baidu com s 18IickcTlMHgesCkmXFi7Lg pwd tala 提取码 ta
  • gcc、g++、make、cmake区别

    首先介绍一下GCC GNU Compiler Collection GNU 编译器集合 在为Linux开发应用程序时 绝大多数情况下使用的都是C语言 因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器 目前 Linux下最
  • 【游戏测试工程师】2023年4399秋招笔试+面试记录

    文章目录 一 笔试题 一 逻辑推理题 1 猜花色 2 猜岗位 二 游戏测试相关题 1 假如你要对一款手机游戏进行基本测试 问 一 你会做哪几个方面的测试 二 分别想怎么做 2 编写游戏测试用例 3 编写测试点 三 编程题 1 游戏竞技场 2
  • java swing GUI窗口美化

    一般我们写出的窗口是这个样子的 文本框和按钮都不是太美观 如果按钮是原色的就更难看了 今天发现了一个更加美观的窗口模式 可以发现按钮和文本框都已经有了变化 给窗口润色不少 其实 只需在调用程序前加上这段代码即可 try for javax
  • Atom+Asciidoctor+Antora环境搭建

    个人博客原文链接 Atom 简介 Atom是github专门为程序员推出的一个跨平台文本编辑器 具有简洁和直观的图形用户界面 并有很多有趣的特点 支持CSS HTML JavaScript等网页编程语言 它支持宏 自动完成分屏功能 集成了文
  • LeetCode——040

    40 Combination Sum II My Submissions QuestionEditorial Solution Total Accepted 66386 Total Submissions 241547 Difficulty
  • 搭建Mybatis注意事项和实现原理,你真的看懂了吗?

    搭建Mybatis环境注意事项 一 搭建Mybatis环境注意事项 二 涉及到的设计模式 2 1工厂模式 SqlSessionFactory 2 2 代理模式 MapperProxyFactory 2 3构建者模式 SqlSessionFa
  • openpyxl绘制堆叠图

    本文将会说明如何用openpyxl绘制堆叠图 先来看看效果图 数据处理后效果展示 源数据 老规矩源代码先放上后面再解析 使用时记得要改一下路径哦 先把openpyxl全家桶安排上 from openpyxl import load work
  • Python基础08

    Python基础08 学习08 方法没有重载 在其他语言中 可以定义多个重名的方法 只要保证方法标签名唯一即可 方法签名包含3个部分 方法名 参数数量 参数类型 Python中 方法的参数没有生命类型 调用时确定参数的类型 参数的数量也可以
  • hive文件存储格式:SequenceFile系统总结

    问题导读 1 什么是SequenceFile 2 如何 通过 源码实现SequenceFile压缩 3 SequenceFile格式压缩有什么优点和缺点 1 SequenceFile是什么1 1 SequenceFile概述 1 1 seq
  • mapGetters 辅助函数

    1 mapGetters 辅助函数 mapGetters 辅助函数 mapGetters 辅助函数仅仅将store 中的 getter 映射到局部计算属性 1 import mapGetters from vuex 2 export def
  • 列出一个文件夹下的所有文件名(全路径)

    需求 列出一个文件夹下的所有文件的全路径文件名 如果文件是文件夹 那么再次遍历这个文件夹的的所有文件名 直到遍历的文件不是文件夹为止 这时输出文件的全路径名 分析 可以用函数实现 1 函数参数1个 就是要遍历的文件夹的名字 2 遍历该文件夹
  • java垃圾回收机制详解

    文章目录 一 垃圾回收机制是什么 二 机制运行原理 三 机制运行步骤 一 垃圾回收机制是什么 Java的垃圾回收 Garbage Collection GC 机制是Java内存管理的核心部分 它可以自动回收不再被程序使用的内存空间 防止内存