系列二、垃圾

一、什么是垃圾

简单的说,垃圾就是内存中已经不再被使用到的空间就是垃圾。

二、 如何判断一个对象是否可以被回收

2.1、引用计数法

        Java中,引用和对象是有关联的,如果要操作对象则必须要用引用进行。因此判断一个对象是否可以被回收,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。简单来讲就是给对象中添加一个引用计数器,每当一个地方引用它,计数器的值就加1,每当一个引用失效时,计数器的值就减1。任何时刻当计数器的值为零的对象,就是不可能再被使用的,那么这个对象就是可以回收的对象。但是,主流的Java虚拟机里面都没有使用这种算法,最主要的原因就是就是它很难解决对象之间的相互循环引用的问题。

2.2、枚举根节点做可达性分析

2.2.1、概述

        为了解决引用计数法存在的循环引用问题,Java使用了可达性分析的方法。基本思路就是通过一系列名为【GC Roots】 的对象作为起始点,从这个被称为【GC Roots】的对象开始向下搜索,如果一个对象到【GC Roots】没有任何引用链相连接时,则说明此对象不可用。也即给定一个集合的引用作为根出发,通过引用关系遍历对象图,能被遍历到的(可到达的)对象就被判定为存活,否则就被判定为死亡。

        说明:所谓【GC Roots】,其实就是一组必须活跃的引用。

 

 2.2.2、Java中可以做GCRoots的对象

(1)虚拟机栈;

(2)方法区中的类静态属性引用的对象;

(3)方法区中常量引用的对象;

(4)本地方法栈中 Native方法引用的对象;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

21款奔驰E300L升级HUD抬头显示 绚丽多彩的展示

随着科技飞速地发展,从汽车领域就可以看出,尤其是汽车的抬头显示器,一经推出就吸引了很多的车主。 升级HUD抬头显示,HUD与汽车系统进行完整的数据信息连接,整合成大数据,然后将一些重要信息映射到车窗玻璃…

2243. 计算字符串的数字和

2243. 计算字符串的数字和 Java:以 k 为步长进行跳!然后再延伸k class Solution {public String digitSum(String s, int k) {while (s.length() > k) {int n s.length();StringBuilder sb new StringBuilder(); // sb存!for (int i …

禁止文件外发,企业文件禁止外发

禁止文件外发,企业文件禁止外发 禁止文件外发是企业信息安全策略中的一项重要措施,用于防止敏感数据或机密文件被员工无意或有意地传送到外部,也是企业数据防泄密的一种方法,从而保护企业数据的安全性和保密性。 下载使用安企神…

PDF控件Spire.PDF for .NET【转换】演示:将PDF 转换为 HTML

由于各种原因,您可能想要将 PDF 转换为 HTML。例如,您需要在社交媒体上共享 PDF 文档或在网络上发布 PDF 内容。在本文中,您将了解如何使用Spire.PDF for .NET在 C# 和 VB.NET 中将 PDF 转换为 HTML。 Spire.Doc 是一款专门对 Word 文档进行…

【鸿蒙应用ArkTS开发系列】- 云开发入门简介

目录 概述开发流程工程概览工程模板工程结构 工程创建与配置 概述 HarmonyOS云开发是DevEco Studio新推出的功能,可以让您在一个项目工程中,使用一种语言完成端侧和云侧功能的开发。 基于AppGallery Connect Serverless构建的云侧能力,开发…

怎样备份电脑文件最安全

怎样备份电脑文件最安全 数据对一家公司来说是非常重要的资产,数据备份是非常重要的,主要是为了保护数据免受意外损失、文件损坏、硬件故障、恶意软件攻击、盗窃或灾难性事件等影响。 下载使用安企神电脑屏幕监控软件 备份电脑文件最安全的方法包括&am…

MS90C385B——+3.3V 150MHz 的 24bit 平板显示器(FPD) LVDS 信号发送器

MS90C385B 芯片能够将 28bit 的 TTL 数据转换成 4 通道的低压差分 信号 (LVDS) 。时钟通道经过锁相之后,与数据通道并行输出。当时钟频 率为 150MHz 时, 24bit 的 RGB 数据、 3bit 的 LCD 时序数据和 1bit 的控 制数据以 1050Mbps…

安装SSL证书有什么意义?

在当今的数字化时代,网络安全已经成为了一个重要的议题。为了保护网站和用户数据的安全,许多网站都选择了安装SSL证书。同时,很多用户不明白安装SSL证书到底有什么意义? 一、网站实现加密传输 用户通过http协议访问网站时&#x…

AI监管规则:各国为科技监管开辟了不同的道路

AI监管规则:各国为科技监管开辟了不同的道路 一份关于中国、欧盟和美国如何控制AI的指南。 编译 李升伟 茅 矛 (特趣生物科技有限公司,广东深圳) 插图:《自然》尼克斯宾塞 今年5月,科技公司OpenAI首席…

uniapp App 端 版本更新检测

function checkVersion() { var req { //升级检测数据 appid: plus.runtime.appid, version: plus.runtime.version }; const timestamp Date.parse(new Date()); config.server.query_news uni.reque…

《持续交付:发布可靠软件的系统方法》- 读书笔记(十五)

持续交付:发布可靠软件的系统方法(十五) 第 15 章 持续交付管理15.1 引言15.2 配置与发布管理成熟度模型15.3 项目生命周期15.3.1 识别阶段15.3.2 启动阶段15.3.3 初始阶段15.3.4 开发与发布15.3.5 运营阶段 15.4 风险管理流程15.4.1 风险管理…

解决Windows Server 2022启动PowerShell出现乱码问题

解决 PowerShell 控制台中字符被乱码的问题 文章目录 乱码问题现象乱码问题原因乱码解决方法1. 从cmd.exe启动 PowerShell2. 更改 PowerShell 控制台中的字体 推荐阅读 乱码问题现象 Windows Server 2022启动 PowerShell 控制台时,字符会出现乱码。 此问题已知仅会…

【数据结构】树与二叉树(十七):二叉树的基础操作:删除指定结点及其左右子树(算法DST)

文章目录 5.2.1 二叉树二叉树性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点,其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

workman使用手册1.0

workman官网地址:高性能PHP应用容器 workerman 1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用 定位到项目根目录:例:cd /mnt/workman 启动代码:php outin.php start -d 停…

Spring Task单机定时任务(使用及阻塞问题解决)

一、介绍 SpringTask是Spring自主研发的定时任务工具,并且存在于Spring体系中,不需要添加任何依赖 Spring Boot 默认在无任何第三方依赖的情况下使用 spring-context 模块下提供的定时任务工具 Spring Task。 我们只需要使用 EnableScheduling 注解就可…

Unity - Cinemachine

动态获取Cinemachine的内部组件 vCam.GetCinemachineComponent<T>() 动态修改Cinemachine的Transposer属性 var vCamComp transfrom.GetComponent<CinemachineVirtualCamera>(); var transposerComp vCamComp.GetCinemachineComponent<CinemachineTransposer&…

【Linux】gcc/g++ gdb 使用

目录 1&#xff0c;背景知识 2&#xff0c;gcc 如何完成 1&#xff0c;预处理(进行宏替换) 2&#xff0c;编译&#xff08;生成汇编&#xff09; 3&#xff0c;汇编&#xff08;生成机器可识别代码&#xff09; 4&#xff0c;连接&#xff08;生成可执行文件或库文件&…

SpringCloud微服务:Nacos快速入门

目录 第一步&#xff1a;cloud-demo的pom文件 第二步&#xff1a;user-service的pom文件 第三步&#xff1a; user-service的yml文件 第四步&#xff1a;order-service的pom文件 第五步&#xff1a; order-service的yml文件 运行 访问数据 1.Nacos服务搭建 下载安装包 …

IDEA创建SpringBoot的多模块项目教程

最近在写一个多模块的SpringBoot项目&#xff0c;基于过程总了一些总结&#xff0c;故把SpringBoot多个模块的项目创建记录下来。 首先&#xff0c;先建立一个父工程&#xff1a; &#xff08;1&#xff09;在IDEA工具栏选择File->New->Project &#xff08;2&#xff0…

【AI视野·今日NLP 自然语言处理论文速览 第六十二期】Wed, 25 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 25 Oct 2023 (showing first 100 of 112 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MuSR: Testing the Limits of Chain-of-thought with Multistep Soft R…
最新文章