垃圾回收相关概念

news2024/9/28 5:34:28

文章目录

      • 1. System.gc()的理解
      • 2.内存溢出与内存泄漏
      • 3. Stop The World
      • 4. 并发与并行
      • 5. 安全点与安全区域的说明
      • 6. 强引用、软引用、弱引用、虚引用

1. System.gc()的理解

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2.内存溢出与内存泄漏

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. Stop The World

在这里插入图片描述在这里插入图片描述

4. 并发与并行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

5. 安全点与安全区域的说明

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

6. 强引用、软引用、弱引用、虚引用

强引用
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
软引用
在这里插入图片描述在这里插入图片描述 SoftReference userSoftRef = new SoftReference(new User(1, “songhk”));
//上面的一行代码,等价于如下的三行代码
User u1 = new User(1,“songhk”);
SoftReference userSoftRef = new SoftReference(u1);
u1 = null;//取消强引用

**
 * 软引用的测试:内存不足即回收
 *
 * @author shkstart  shkstart@126.com
 * @create 2020  16:06
 */
public class SoftReferenceTest {
    public static class User {
        public User(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public int id;
        public String name;

        @Override
        public String toString() {
            return "[id=" + id + ", name=" + name + "] ";
        }
    }

    public static void main(String[] args) {
        //创建对象,建立软引用
//        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;//取消强引用


        //从软引用中重新获得强引用对象
        System.out.println(userSoftRef.get());

        System.gc();
        System.out.println("After GC:");
//        //垃圾回收之后获得软引用中的对象
        System.out.println(userSoftRef.get());//由于堆空间内存足够,所有不会回收软引用的可达对象。
//
        try {
            //让系统认为内存资源紧张、不够
//            byte[] b = new byte[1024 * 1024 * 7];
            byte[] b = new byte[1024 * 7168 - 635 * 1024];
        } catch (Throwable e) {
            e.printStackTrace();
        } finally {
            //再次从软引用中获取数据
            System.out.println(userSoftRef.get());//在报OOM之前,垃圾回收器会回收软引用的可达对象。
        }
    }
}

弱引用
在这里插入图片描述在这里插入图片描述弱引用和软引用的区别:弱引用发生GC就回收,软引用内存不足才回收。发生GC不代表就内存不足了,还需要通过算法检查。

虚引用
在这里插入图片描述在这里插入图片描述在这里插入图片描述

注:本文是学习 尚硅谷宋红康JVM全套教程(详解java虚拟机)所做笔记。

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

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

相关文章

jsp+ssm计算机毕业设计大学生家教服务推荐系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

nuxt.js如何将访问的外部ip修改为本地ip? Do you want Code to open the external website?

问题描述&#xff1a; 提示&#xff1a;Do you want Code to open the external website? 译文&#xff1a;是否希望代码打开外部网站&#xff1f; 说明我们nuxt.js访问的是别人的ip地址&#xff0c;而并不是自己的ip 问题解决&#xff1a; 方法一&#xff1a; 查看packa…

Python中GDAL批量绘制多时相栅格遥感影像的像元时间序列曲线图

本文介绍基于Python中gdal模块&#xff0c;对大量多时相栅格图像&#xff0c;批量绘制像元时间序列折线图的方法。 首先&#xff0c;明确一下本文需要实现的需求&#xff1a;现有三个文件夹&#xff0c;其中第一个文件夹存放了某一研究区域原始的多时相栅格遥感影像数据&#x…

C/C++socket网络编程

目录tcp和udp通信流程图socket函数bind函数listen函数accept函数connect函数recv、recvfrom、read函数send、write、sendto、sendmsg函数close、shutdown函数htonl、ntohl、htons、ntohs本地主机和网络字节序转换inet_addr、inet_aton、inet_ntop&#xff0c;IP地址转换函数set…

Spark-概述+快速上手+运行环境

文章目录概述Spark and HadoopSpark or Hadoop核心模块快速上手Spark运行环境Local(本地)Standalone模式搭建和使用提交参数说明配置历史服务配置高可用&#xff08;HA&#xff09;Yarn模式K8S & Mesos 模式部署模式对比端口号概述 Spark 是一种基于内存的快速、通用、可扩…

红米Note7pro安装TWRP及安装PixelExperience系统

参考&#xff1a;https://www.youtube.com/watch?vjB9ksQrxr20&ab_channelTechnologyVikram 所需文件&#xff1a; 一. youtube:Vikram--OTG优盘 (https://www.youtube.com/watch?vjB9ksQrxr20&ab_channelTechnologyVikram) 1.刷入TWRP a. 准备工作&#xff1a;打开…

MR案例:学生排序

排序一、提出任务二、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录&#xff08;二&#xff09;实现步骤1、创建学生实体类2、创建学生映射器类3、创建学生归并器类4、创建学生驱动器类5、启动学生驱动器类&#xff0c;查看结…

JVM虚拟机简介

、 什么是JVM&#xff1f; JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指…

IDEA maven 向项目添加模块时出错创建项目失败

原因一&#xff1a;Maven 版本太新 || Java 版本选择了 JAVA 18 选择 java 版本为1.8构建 即可成功&#xff0c;第一次maven项目建立的时候下图红框内容如图即可 原因二&#xff1a;IDEA 的 maven插件 没有加载完成 通常发生在重设 maven 路径|仓库之后 原因三&#xff1a;mav…

RK3588平台开发系列讲解(RKNN篇)RKNN Android平台开发说明

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、 Android 平台 RKNN API 库二、EXAMPLE 使用说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKNN SDK 为带有 RKNPU 的芯片平台提供编程接口,能够帮助用户部署使用 RKNN-Toolkit2导…

uni-app卖座电影多端开发纪实(六):多端打包

@打包为H5站点 打包站点 HBuilder中菜单中依次点击【发行】-【网站-PC Web或手机H5(仅适用于uni-app)】填写网站标题,点击发行控制台会输出类似如下信息此时站点需要的文件已经被打包到了unpackage/dist/build/h5目录部署站点 复制上一步中生成的h5目录到Nginx的部署目录下…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.5 多段线、多边形

本节对应的视频讲解&#xff1a;B_站_视_频 https://www.bilibili.com/video/BV1ZP4y1S7Ax 本节讲解如何绘制多段线、多边形 1. 相关的 API 直接查看官方的帮助文档&#xff0c;可以看到有多个重载的方法用于绘制多段线、多边形 1.1 多段线 将多个点连接形成多段线 比如&…

Linux基础(4)进程管理

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【参考文章】 参考文章&#xff1a;https://howard2005.blog.csdn.net/article/details/127066383?spm1001.2014.3001.5502 文章目录一、查看进程1. 进程查看命令 - ps2. Liunx进程状态3. 观察进程变化命令 - top4. …

jsp+ssm计算机毕业设计大学教师年终考核管理信息系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

浅析nvme原子写的应用场景

1.NVMe原子写简介 NVME协议家族&#xff0c;当前发展的已经非常庞大&#xff0c;来张nvme家族大合影。从最开始的NVME Base Spec&#xff0c;又延伸了更加专业聚焦的模块Command Set Spec、Transport Spec&#xff0c;NVME MI Spec等等。 在Command Set Spec中&#xff0c;我们…

【学习笔记】pytest接口自动化测试框架入门(pytest+yaml)

pytest接口自动化测试框架入门&#xff08;pytestyaml&#xff09; 文章目录自动化测试需要包含的内容pytest的安装使用pytest默认的测试用例的规则和基础使用:pytest测试用例的运行方式pytest执行测试用例的顺序分组执行pytest跳过测试用例pytest框架前后置处理解&#xff08;…

智能指针循环引用——你真的懂了吗?

相信不少同学都在面试中都被问到过c智能指针的问题&#xff0c;接踵而至的必定是循环引用了&#xff0c;而我每次的答案都是一招鲜&#xff1a;因为它们都在互相等待对方先释放&#xff0c;所以造成内存泄漏。面试官很满意&#xff0c;我也很满意。 但是为啥要等到对方先释放&…

STM8开发实例-ADC

ADC 1、ADC介绍 ADC 是任何现代微控制器中非常重要的外设。 它用于读取传感器的模拟输出、检测电压电平等。 例如,我们可以使用 ADC 读取 LM35 温度传感器。 传感器的电压输出与温度成正比,因此我们可以使用电压信息来反算温度。 下图是STM8s的ADC外设框图: 在使用 ADC 之…

猿如意|初识CSDN的开发者工具合集

前言&#xff1a; CSDN网站其实不仅仅有博客&#xff0c;虽然整个网站是基于博客开始的&#xff0c;但无疑博客是整个网站的魂。 那么&#xff0c;现在的CSDN还有第二个和第三个魂&#xff0c;就是云计算服务和猿如意了。 猿如意好像是CSDN5 6月份推出的&#xff0c;具体时间…

CSC7715 同步整流

CSC7715是一款用于开关电源的高效率同步整流控制IC。其具备较高的集成度&#xff0c;在有效的提升开关电源的转换效率的同时&#xff0c;减少了外围元器件的应用。CSC7715可用于DCM/QR开关电源系统。该电路内置45V的功率管&#xff0c;在系统中替代次级肖特基管,并提高整个系统…