Java的垃圾回收机制介绍

2023-11-11

1、java的语言框架

(1)CPU->操作系统内核->应用层框架->JVM(java虚拟机)->Java字节码->Java源代码
(2)java是解释型语言,嵌入式常用的C/C++是编译型语言,简单来说:编译型语言只需要编译一次就可以执行,比如将C/C++编译成可执行程序;解释型语言是解释一句执行一句,依赖运行时环境,比如java运行依赖JVM;
(3)Java虚拟机是Java语言的运行时环境,也是Java语言跨平台的关键;

2、java的垃圾回收机制介绍

(1)垃圾收集GC(Garbage Collection)是Java语言的核心技术之一, 在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理;
(2)GC线程(Java虚拟机中的守护线程)负责垃圾回收,java程序员不用操心;

2.1、什么样的对象是垃圾

(1)对于Java对象来讲,如果说这个对象没有被其他对象所引用该对象就是无用的,此对象就被称为垃圾,其占用的内存也就要被销毁;
(2)引出一个问题,怎么来判断哪些对象时垃圾?

2.2、标记垃圾的算法

2.2.1、引用计数法

(1)实现思路:给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的,可以当做垃圾收集;
(2)优点:执行效率高,程序执行受影响较小;
(3)缺点:无法检测出循环引用的情况,导致内存泄露;

2.2.2、可达性分析算法

在这里插入图片描述

实现思路:通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。

3、java垃圾回收机制总结

(1)java的垃圾回收机制让程序员免于考虑对象的生命周期和资源的申请、释放,降低java程序员的编程难度;
(2)垃圾回收机制的稳定性和效率取决于运行时环境(JVM等)设计和实现的好坏;
垃圾回收机制是要增加额外开销的,相当于用效率和内存来降低程序员的编程难度,让程序员更加去关注业务而不是语言;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的垃圾回收机制介绍 的相关文章

随机推荐

  • Clang 中 AST 相关类简介(不定时更新)

    Clang 中 AST 相关类简介 不定时更新 1 Decl declaration 1 1 FunctionDecl 2 Stmt statement 3 Expr expression 3 1 FullExpr 3 2 ExprWith
  • 【Grub2】BIOS添加Grub2引导(Windows下操作)

    电脑上安装的系统是Windows10 BIOS MBR 想利用Grub2安装CentOS 和RemixOS三个操作系统 为了实现硬盘安装CentOS 需要用到Grub2 第一步 Grub2下载 文件准备到Grub2官网ftp ftp gnu
  • C语言库函数— qsort () 详解

    目录 1 qsort 函数简介 1 1 函数原型 1 2 函数参数 2 比较函数简介 2 1 比较函数参数 2 2 比较函数使用 3 qsort 函数使用 3 1 整形数组排序 3 2 字符数组排序 3 3 浮点型数组排序 double类型
  • 降压式变换电路(Buck电路)详解

    降压式变换电路 Buck电路 详解 一 BUCK电路基本结构 开关导通时等效电路 开关关断时等效电路 二 等效的电路模型及基本规律 1 从电路可以看出 电感L和电容C组成低通滤波器 此滤 波器设计 的原则是使 us t 的直流分量可以通过
  • 计算机英语第三版司爱华,論计算机英语的特征.doc

    論计算机英语的特征 毕业设计 论文 题目 论计算机英语的特征 形式 层次 专科 专业 经贸英语 班号 学号 学生姓名 指导教师 年 月 日 摘 要 计算机英语是英语的一个分支 属于专业英语的范畴 所以有其自己的特征本文主要从计算机英语的词汇
  • 第2天:基础入门-数据包拓展

    前言 如有不妥之处 还望指正 目录 前言 1 网站解析对应 2 HTTP HTTPS数据包 2 1 HTTP 与 HTTPS 区别 2 2 HTTP简要通信过程 2 3 HTTPS简要通信过程 2 4 Request请求数据包数据格式 2
  • AI真的快让我失业了

    以下文章来源于深燃 作者深燃团队 编辑 深燃 聚焦创新经济 专注深度内容 来源 深燃 ID shenrancaijing 作者 邹帅 李秋涵 王敏 唐亚华 王璐 编辑 李秋涵 本文已获授权 跟AI有关的新闻 一个接着一个 前一天你还和往常一
  • 光纤收发器的六个指示灯代表是什么意思?

    对光纤收发器这块了解的朋友应该知道 光纤收发器有6个LED指示灯 它们分别显示了收发器的工作状态 根据LED所示 我们就能判断出收发器是否工作正常和可能有什么问题 从而能帮助找出故障 那么 光纤收发器的六个指示灯分别代表什么意思 有哪些作用
  • 刷题_day2:双指针法

    题目介绍 给你一个数组 nums 和一个值 val 你需要 原地 移除所有数值等于 val 的元素 并返回移除后数组的新长度 可以使用暴力解法 嵌套两个for循环 但是时间复杂度为O n2 双指针法 快慢指针 可以利用两个指针 在一次for
  • Spring Boot自动装配原理(易懂)

    Spring Boot的自动装配原理 易懂 熟练使用Spring Boot那么自动装配原理的掌握是必不可少的 文章目录 Spring Boot的自动装配原理 易懂 一 自动装配是什么 二 启动类注解流程关系分析 1 首先展示 SpringB
  • R语言中如何给向量改变赋值

    R语言中如何给向量改变赋值 一 创建向量 二 访问向量特定位置 三 改变向量特定位置赋值 结果 一 创建向量 a lt c rep 冬季盛宴 5 rep 盛宴 6 二 访问向量特定位置 代码如下 示例 在这里插入代码片 a 4 三 改变向量
  • ln: 创建符号链接 "/usr/bin/java": 文件已存在

    执行下述命令创建软链接 ln s JAVA HOME bin java usr bin java 出现下述错误提示 ln 创建符号链接 usr bin java 文件已存在 这种情况可以通过命令ll检查下 usr bin java现有的软链
  • Shell 批量搜索关键词并保存结果到文件中(数组、循环)

    bin bash keywords 不需要 不用谢谢 xxx xxx for var in keywords do echo var cat corpus txt grep var wc l cat corpus txt grep var
  • 微信支付V3 生成平台证书

    微信支付V3里必须有平台证书文件 才能唤起唤醒支付 平台证书生成前提需要提前下载好设置apikey3后下载的证书3个证书文件 apiclient key pem apiclient cert pem apiclient cert p12 官
  • C++ 栈和队列

    前言 前几次我们学习了vector list 分别对应线性表和链表 这两个基础的数据结构 本篇 我们将基于前面知识的基础 学习线性表和链表的应用结构 栈和队列 文章目录 前言 一 栈 1 概要 2 适配器 配接器模式 3 栈的使用 4 模拟
  • 富文本编辑器提取纯文本(uniapp、vue没有简介用详情替代)

    1 js方法 filtersText val if val null val let reg u4e00 u9fa5 g let names val match reg val names names join return val els
  • 以太坊之Downloader同步区块流程

    随着以太坊的数据越来越多 同步也越来越慢 使用full sync mode同步的话恐怕得一两个礼拜也不见得能同步完 以太坊有fast sync mode 找了些文章还不是很明白具体内容 所以尝试着看懂写下来 如有错误之处欢迎指正 关于fas
  • Python3 实现进度条

    本文实例讲述了Python显示进度条的方法 是Python程序设计中非常实用的技巧 分享给大家供大家参考 具体方法如下 首先 进度条和一般的print区别在哪里呢 答案就是print会输出一个 n 也就是换行符 这样光标移动到了下一行行首
  • sykwalking分布式微服务链路追踪

    不做介绍 直接上教程 skuwalking历史版本下载地址 https archive apache org dist skywalking 一 安装服务端 下载apache skywalking apm 8 4 0 tar gz 丢到服务
  • Java的垃圾回收机制介绍

    1 java的语言框架 1 CPU gt 操作系统内核 gt 应用层框架 gt JVM java虚拟机 gt Java字节码 gt Java源代码 2 java是解释型语言 嵌入式常用的C C 是编译型语言 简单来说 编译型语言只需要编译一