当前位置: 首页 > news >正文

17-垃圾回收相关概念

目录

    • 一、System.gc()的理解
    • 二、内存溢出和内存泄漏
      • 2、内存泄漏
    • 三、Stop the World
      • 1、什么是 stop the word ?
    • 四、垃圾回收的并行和并发
      • 1、并发和并发
      • 2、垃圾回收的并行和并发
    • 五、安全点与安全区域
      • 1、什么是安全点?
      • 2、安全区域
    • 六、强引用(不可回收)
    • 七、软引用(Soft Reference 内存不足即回收)
    • 八、弱引用(Weak Reference 发现即回收)
    • 九、虚引用(Phantom Reference 对象回收跟踪)
    • 十、终结器引用(Final Reference)

一、System.gc()的理解

显示触发FullGC

二、内存溢出和内存泄漏

Javadoc中对于OutOfMemoryError的解释是,没有空闲内存,并且垃圾收集器也无法提供更多的内存

2、内存泄漏

只有对象不再被应用程序使用到了,但是GC又不能回收他们的情况,才叫内存泄漏

三、Stop the World

1、什么是 stop the word ?

四、垃圾回收的并行和并发

1、并发和并发

2、垃圾回收的并行和并发

五、安全点与安全区域

1、什么是安全点?

程序执行的时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为安全点(SafePoint)

SafePoint 的选择很重要

2、安全区域

安全区域是指在一段代码片段中,对象的引用关系不会发生变化,在这个区域中的任何位置开始GC都是安全的

六、强引用(不可回收)

七、软引用(Soft Reference 内存不足即回收)

软引用是用来描述一些还有用,但非必须的对象。

        //创建对象,建立软引用
//        SoftReference<User> userSoftRef = new SoftReference<User>(new User(1, "songhk"));//上面的一行代码,等价于如下的三行代码User u1 = new User(1,"songhk");SoftReference<User> userSoftRef = new SoftReference<User>(u1);u1 = null;//取消强引用

八、弱引用(Weak Reference 发现即回收)

弱引用也是用来描述那些非必需的对象,只被弱引用关联的对象只能生存到下一次垃圾收集发生为止

九、虚引用(Phantom Reference 对象回收跟踪)

也称为"幽灵引用"或者"幻影引用",是所有引用类型中最弱的一个

一个对象是否有虚引用的存在,完全不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它和没有引用几乎是一样的,随时可能被垃圾回收器回收。

为一个对象设置虚引用的唯一目的在于跟踪垃圾回收过程,比如:能在这个对象被收集器回收时收到一个系统通知

十、终结器引用(Final Reference)

相关文章:

17-垃圾回收相关概念

目录 一、System.gc()的理解二、内存溢出和内存泄漏2、内存泄漏 三、Stop the World1、什么是 stop the word ? 四、垃圾回收的并行和并发1、并发和并发2、垃圾回收的并行和并发 五、安全点与安全区域1、什么是安全点&#xff1f;2、安全区域 六、强引用&#xff08;不可回收&…...

Ubuntu-server 22.04LTS源码编译apache服务器

1 系统环境 # cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.3 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAMEjammy IDubuntu ID_LIKEdebian HOME_URL"https://www.ubuntu.co…...

科技资讯|苹果虚拟纸可在Vision Pro中为广告、书籍等提供MR内容和动画

近日&#xff0c;美国专利商标局正式授予苹果一项与虚拟纸张相关的专利。这是与虚拟纸张这项发明相关的第二项专利&#xff0c;鉴于苹果 Vision Pro 将于明年上市&#xff0c;那么我们离苹果实现虚拟纸张的发明又近了一步。 虚拟纸张将能够包含 2D、3D 和动画等 MR内容&#…...

JavaScript-promise使用+状态

Promise 什么是PromisePromise对象就是异步操作的最终完成和失败的结果&#xff1b; Promise的基本使用&#xff1a; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compati…...

xshell---git上传文件到gitee远程仓库配置

1.git下载 如果没有xshell下没有下载过git&#xff0c;可以参考这篇的教程&#xff1a;Linux配置安装 git 详细教程 下载后可以通过 git --version 查看git的版本号&#xff0c;验证是否安装成功 2.新建仓库 首先需要在gitee上注册一个账号 然后再主页面点击右上边框的 号…...

【GO语言基础】前言

系列文章目录 【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 文章目录 系列文章目录一、基础知识包和函数函数声明语法简洁性 括号成对出现GO常用DOS命令命名规则项目目录结构注释 总结 一、基础知识 包和函数 //声明本代…...

巧妙的设计

1. 判空逻辑,如果为空,抛异常,下面代码来自kafka client: Assert.notNull(queue, () -> "No cache found for " + txIdPrefix); 2. 本地cache设计,一下代码来自kafka client: private final Map<String, BlockingQueue<CloseSafeProducer<K, V&g…...

前端JavaScript中MutationObserver:监测DOM变化的强大工具

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. MutationObserver简介 2. MutationObserver的属性 3. MutationObserver的应用场景 3.1 动态内容加载 …...

28335 GPIO作为输入的配置记录

28335 GPIO配置为输入&#xff0c;可以启动输入滤波功能&#xff0c;看了网上很多的讲解&#xff0c;把滤波配置记录一下&#xff1a; 主要是配置两个参数&#xff1a; GpioCtrlRegs.GPXCTRL.bit.QUALPRDX &#xff1a;用于配置采样的周期&#xff0c;由配置值和SYSCLKOUT共同…...

js脚本解决markdown本地图片->图床问题,附源代码和编译后的exe

前提条件 安装picgo-core,安装步骤: npm install -g picgo -g 然后配置图床 picgo set uploader ? Choose a(n) uploader (Use arrow keys)smms ❯ tcyungithubqiniuimguraliyunupyun (Move up and down to reveal more choices) 配置好后便可使用项目 快速开始-获取项目…...

C#不通过byte[],直接对内存映射文件复制内存

背景 多个进程直接需要传递大量图片&#xff0c;所以对性能要求较高。支付复制内存显然比转成byte[]再复制优越。 命名空间 using System; using System.Diagnostics; using System.Runtime.InteropServices; 代码 public CMainTestForm() { InitializeCo…...

ELK之Logstash启动异常:Logstash could not be started because there is already...

Logstash启动异常&#xff1a; Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting. 提示我们已经有一个实例在用da…...

Matlab Simulink支持system generator插件

文章目录 前言一、System Generator 简介二、System Generator 特性三、System Generator 安装1、确定是否已安装 System Generator 工具2、vivado 卸载3、vivado 安装 四、解决版本不兼容问题五、使用 System Generator 前言 目前有在 Simulink 中开发完成后将其转换成 Veril…...

redis设计规范

部分内容参考&#xff1a;阿里redis开发规范 同时&#xff0c;结合shigen在实习中的实践经验总结。 key的名称设计 可读性和管理性 业务名: 表名: id pro:user:1001简洁性 控制key的长度&#xff0c;可以用缩写 transaction -> tras拒绝bigkey 防止网卡流量、慢查询&…...

用于非线性多载波卫星信道的多输入多输出符号速率信号数字预失真器DPD(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【Spark】用udf和withColumn在dafaframe中创建新列

udf使用 import org.apache.spark.sql.functions.udf udf接收一个函数&#xff08;func&#xff09;作为参数&#xff0c;返回一个UserDefinedFunction。 UserDefinedFunction接收列&#xff08;Column&#xff09;作为参数&#xff0c;并返回Column. func可以接收普通类型参数…...

AIGC 设计能替代真正的设计师设计吗?

AIGC 设计能替代真正的设计师设计吗&#xff1f; 目录 一、写在前面的话 二、AIGC 设计能替代真正的设计师吗&#xff1f; 1.1、传统设计师设计 1.2、AIGC设计 1.3、相关概念 1.4、观点分析 &#xff08;1&#xff09;、审美角度 &#xff08;2&#xff09;、版权角度 …...

【1++的C++进阶】之emplace详解

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C进阶】 在前面C11系列的文章里&#xff0c;我们漏掉了几个知识点&#xff0c;这篇文章对其中一个知识点进行讲解&#xff0c;关于剩余的知识点的文章在后面会相继出炉。 C11中&#xff0c;针…...

React入门

一、react开始 1、react是什么 用于构建用户界面的JavaScript库 操作DOM呈现页面 &#xff08;发送请求获取数据和处理数据不由react处理&#xff09;fessbook开发 2、为什么要学 原生js操作DOM繁琐、效率低 使用原生js直接操作DOM&#xff0c;浏览器会进行大量重绘重排 原…...

第三方登录以及验证

第三方登录是指用户可以通过使用已有的第三方账号进行登录&#xff0c;而无需再次注册新的账号。常见的第三方登录平台包括微信、QQ、微博、GitHub等。 验证是指系统需要验证用户提供的信息是否正确&#xff0c;以确保用户可以登录系统。验证方式包括密码验证、手机号验证、邮…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...