20_GC垃圾回收机制

news2024/9/27 23:30:37

文章目录

  • GC
    • 如何确定垃圾
    • 如何回收垃圾
    • 回收垃圾的时机

GC

如何确定垃圾

  • 引用计数算法

    • 给对象添加一个引用计数器,每当一个地方引用它时,计数器加1,每当引用失效时,计数器减少1,当计数器的数值为0时,也就是对象无法被引用时,表明对象不可在使用。

    • 但是这个算法存在一个致命的缺陷,无法解决循环引用的问题。

  • 根搜索算法

    • 这个算法的基本思想是将一系列称为“GC Roots”的对象作为起始点,从这些起始结点开始向下搜索,搜索所走的路径称为引用链。
    • 当一个对象到所有的GC root之间没有任何引用链相连时,就认为该对象变成了垃圾。
    • GC Roots包含对象:
      • 虚拟机栈中引用的对象
      • 方法区中的静态属性引用的对象

如何回收垃圾

  • 标记清除算法Mark Sweep
    • 首先标记出所有需要回收的对象,在完成标记后,统一回收掉所有被标记的对象
    • 也可以标记存活的对象,统一回收所有未被标记的对象
    • 会产生内存碎片

在这里插入图片描述

  • 标记复制算法
    • 一次性回收大片的连续空间
    • 内存利用率低,不会产生内存碎片
    • 如果说有少量存活对象,复制起来很快,适用于少量对象存活的情况
    • 如果有大量对象存活,就需要复制大量对象,效率就低了
      在这里插入图片描述
  • 标记整理算法Mark Compact

在这里插入图片描述

  • 分代收集算法
    • 强分代假说
      • 熬过越多次垃圾收集过程的对象就越难以消亡。(简单理解就是越老的对象就具有”老而不死”的特性)
    • 弱分代假说
      • 弱分代假说(Weak Generational Hypothesis): 绝大多数对象都是朝生夕灭的.

在这里插入图片描述

回收垃圾的时机

  • 申请heap space失败后会触发GC回收
  • 系统进入idle(休眠)后一段时间会进行回收
  • 主动调用GC进行回收 System.gc()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1379691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python,序列的切片

序列的切片就是指从一个序列中取出子序列 语法: 序列[起始下标:结束下标:步长] 步长为1表示一个一个的取元素,步长为2表示每次跳过一个元素的取元素,步长为负数表示反向切片,取元素时取到结束下标&#…

Python如何免费调用微软Bing翻译API

一、引言 现在免费的机器翻译越来越少了,随着有道翻译开始收费,百度降低用户的免费机器翻译额度(目前只有实名认证过的高级用户才能获得100万字符的免费翻译额度),而亚马逊、腾讯等机器翻译调用相对比较麻烦,需要下载各种插件包&…

智能小程序能做什么?

一. 自定义Tab页 涂鸦提供了丰富的场景化、个性化的 ToC 智能服务,不仅可以快速低成本的自由搭建出更多智能服务,还为你提供了基于小程序技术方案的可自主可控的自定义开发链路,为拓展更多品牌化、个性化、差异化智能服务提供生态基础。 我…

Unity之角色控制器

PS:公司终于给我派任务了,最近几天都没学Unity🤧。 一、角色控制器的实现方式 目前小编知道的角色控制器实现方式有三种: 应用商店的角色控制系统Unity自己的角色控制器通过物理系统去做角色控制器 本篇介绍的是第二种Unity自己的角色控制…

【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C复习系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

vi/vim 编辑器 --基本命令

1 vi/vim编辑器介绍 vi 是visual interface 的简称,是Linux中最经典的文本编辑器 vim是vi的加强版。兼容了vi的所有指令,不仅能编辑文本,而且具有shell程序编辑的功能,可以通过不同颜色的字体辨别语法的正确性,极大…

js中try...catch捕捉错误

文章目录 一、前言二、场景2.1、setTimeout2.2、Promise 三、最后 一、前言 说到try...catch都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的 二、场景 try...catch只能捕捉到同步执行代码块中的错误 2.1、setTimeout try {setT…

淘宝商家实现批量上货API接口调用接入说明(淘宝开放平台免申请接入)

API接入详细步骤: 第一步:在淘宝开放平台中选择接口塡写应用申报递交给我司,确认接口是否都有。 第二步:确认接口都有,需交1000元进行测试,可以测试三天,测试数据符合淘宝开放平台接口参数说明&…

Java常用的加密技术

项目结构: 总体代码: package VirtualUtils; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.sp…

WebServer 跑通/运行/测试(详解版)

👂 椿 - 沈以诚 - 单曲 - 网易云音乐 目录 🎂前言 🌼跑通 (1)系统环境 (2)克隆源码 (3)安装和配置 Mysql (4)写 sql 语句 (5&…

文件操作(一)

目录 一.什么是文件 1.程序文件和数据文件 2.文件名 3,文本文件和二进制文件 二.文件的打开和关闭 1.流和标准流 2.文件指针 3.文件的打开与关闭 三.结尾 一.什么是文件 在我们学习文件操作之前我们先了解一下什么是文件?以及文件为什么使用文件…

【Effective Objective - C】—— 熟悉Objective-C

【Effective Objective - C】—— 熟悉Objective-C 熟悉Objective-C1.oc的起源消息和函数的区别运行期组件和内存管理要点: 2.在类的头文件中尽量少引入其他头文件向前声明要点: 3.多使用字面量语法,少用与之等价的方法字符串字面量字面数值字…

小程序基础学习(导航栏组件)

一&#xff0c;创建组件 二&#xff0c;组件传入参数 三&#xff0c;组件接收参数 四&#xff0c;组件渲染参数 五&#xff0c;组件代码 <!--components/daoHangLan/daoHangLan.wxml--> <view class"titles"><block wx:for"{{titles}}"…

第 3 章 Keepalived 双机热备

技能展示&#xff1a; 会构建双机热备系统 会构建 LVSHA 高可用群集 在这个高度信息化的 IT 时代&#xff0c;企业的生产系统、业务运营、销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机信息和服务&#xff0c;对高可用&#xff08;HA&#xff09;技术的应用需求…

Python3.5如何打包编译

python3.5怎么打包编译 问题&#xff1a;用Python开发的小工具有时需要编译打包为Windows(*.exe)、Mac等操作系统下的可执行性文件以供非程序员使用。 解决方案&#xff1a; 一、py2exe 目前只支持到Python3.4&#xff0c;暂不支持Python3.5 二、PyInstaller 安装&#x…

C#人力资源管理系统源码

C#人力资源管理系统源码 源码描述&#xff1a; 该系统利用asp.net中mvc,linq搭建开发&#xff0c; 分权限管理 权限级别分为&#xff1a;管理员&#xff0c;经理&#xff0c;专员&#xff0c;员工等 管理员可以管理角色、菜单 经理可以管理 组织规划&#xff0c;员工管理&#…

微信商家转账到零钱,既能单笔又能批量,支持多商户管理

大家好&#xff0c;我是小悟 微信商家转账到零钱的功能大家应该都熟悉吧&#xff0c;为了满足商家向用户微信零钱转账的需求&#xff0c;微信支付推出【商家转账到零钱】服务&#xff0c;方便商户可以一次向单个或多个用户的微信零钱转账。 商家转账到零钱为商户提供了简便、…

【Qt 学习之路】关于C++ Vlc视频播放

文章目录 1、简介2、效果2.1、视频2.2、动态图 3、核心代码3.1、判断视频3.2、视频核心类调用3.3、视频核心类3.3.1、头文件3.3.2、源文件 1、简介 最近有童鞋咨询VLC相关的问题&#xff0c;公布一个 5年前 编写的 VLC示例 代码供参考学习。包括正常对视频各种常用的操作&…

ASP.NET进销存系统源码

ASP.NET进销存系统源码 功能介绍&#xff1a; 财务 销售清单&#xff0c;填写销售单&#xff0c;客户管理&#xff0c;添加客户资料 销售 销售清单&#xff0c;填写销售单&#xff0c;客户管理&#xff0c;添加客户资料 仓库 仓库结存&#xff0c;仓库盘点&#xff0c;盘点结…

App在线封装的革命性创新

随着移动互联网的蓬勃发展&#xff0c;App已经成为我们日常生活中不可或缺的一部分。从购物、交通、社交到娱乐&#xff0c;几乎每个人的智能手机都装载着数十个应用程序&#xff0c;以满足各式各样的需求。然而&#xff0c;对于许多非技术背景的企业家和小型企业而言&#xff…