JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型

Java 中对象的引用分为四种级别,这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。

基础知识

强引用:普通使用的引用

强引用是造成 Java 内存泄漏的主要原因之一

软引用:

GC内存不够时回收

适用于:当缓存使用

弱引用⭐(面试问的最多):遇到GC就会回收

弱引用 -> ThreadLocal

弱引用:解决某些地方的内存泄露问题

虚引用:直接回收,和没有一样

虚引用的作用:当某个对象被回收时,会发一个通知,知道这个对象被回收了

软引用/弱引用通过 get() 方法可以拿到这个引用的值,但虚引用拿不到这个值

queue 监测:有没有虚引用被回收,并通知

用途:管理堆外内存

JVM:只能通过 gc 管理自己的内存,不能管理不属于自己的内存 

虚引用指向 DirectByteBuffer 时,任何一个对象被回收时,通过监测 Queue 里面有没有对象,知道该对象被清理后要不要清理堆外内存。仍然是 JVM 通过 gc 清理堆外内存。

Threadlocal

threadlocal 结合线程池可以做很多很多东西

threadlocals 可能是从线程池里面拿取的,因此最好养成好习惯,用完 threadlocals 就把它 remove 掉

threadlocal 中的 entry 是一个弱引用

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

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

相关文章

翻译 《The Old New Thing》 - What is the Alt+Tab order?

What is the AltTab order? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20031020-00/?p42093 Raymond Chen 2003年10月20日 AltTab 列表中的图标顺序是如何确定的? 是什么决定了在 AltTab 列表中图标出现的顺序?…

第十五届蓝桥杯题解-数字接龙

题意:经过所有格子,并且不能进行交叉,走的下一个格子必须是当前格子值1%k,输出路径最小的那一条(有8个方向,一会粘图) 思路:按照8个方向设置偏移量进行dfs,第一个到达终…

一台服务器同时启动两个版本jdk

之前Java项目都是1.8的jdk,在服务器部署正常使用,服务器配置环境变量jdk1.8版本。最近一次我用了jdk17版本,部署服务器后,遇见了jdk版本不一致报错 报错内容: 52指向jdk1.8,61指向jdk17,大概就是jdk版本不…

[Java基础揉碎]集合

目录 集合的理解和好处 数组 集合的理解和好处 继承图 ​编辑 简单实例 Collection接口和常用方法 1) add:添加单个元素 2) remove:删除指定元素 3) contains:查找元素是否存在 4) size:获取元素个数 5) isEmpty:判断是否为空 ​编辑 6) clear:清空 7) addAll:添…

「51媒体」新闻媒体邀约如何进行媒体宣传(方法)

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新闻媒体邀约进行媒体宣传是一个策略性的过程,旨在吸引媒体的注意力并促使其对特定事件、产品发布或企业活动进行报道。以下是一些关键步骤和策略: 制定媒体传播方…

【做一名健康的CSDNer】程序员脱单真的很难吗?

脱单的难易程度并不取决于一个人是否是程序员,而是受到多种因素的影响,包括个人的社交能力、生活方式、个性特点、外貌形象、兴趣爱好等。程序员这个职业群体并不例外。 对于程序员来说,可能面临的挑战包括: 工作时间:…

<计算机网络自顶向下> TCP拥塞

目录 TCP拥塞控制机制 TCP拥塞感知 TCP速率控制方法 TCP拥塞控制和流量控制的联合动作 TCP拥塞控制策略 TCP吞吐量 TCP公平性 TCP拥塞控制机制 端到端的拥塞控制机制 路由器不向主机提供有关拥塞的反馈信息 路由器负担较轻 符合网络核心简单的TCP/IP架构原则 端系统根据自…

Oracle使用内部包自定义创建表空间和用户

如果之前有类似的表空间,可以使用dbms自动生成对应的表空间和数据文件 select dbms_metadata.get_ddl(TABLESPACE,ts.tablespace_name) from dba_tablespaces ts; 可以使用类似的 SQL> set echo off SQL> spool /data/logs/create_tablespace.log SQL> select dbms…

设计模式学习笔记 - 开源实战三(中):剖析Google Guava中用到的设计模式

概述 上篇文章,我通过 Google Guava 这样一个优秀的开源类库,讲解了如何在业务开发中,发现跟业务无关、可以复用的通用功能模块,并将它们抽离出来,设计成独立的类库、框架或功能组件。 本章再来学习下,Go…

【Hadoop3.3.6全分布式环境搭建】

说明: 完成Hadoop全分布式环境搭建,需准备至少3台虚拟机(master slave01 slave02)环境: VMWare + Centos7 + JDK1.8+ Hadoop3.3.6主机规划: 主节点:master从节点:slave01 , slave02 一、准备工作 1、所有主机安装jdk 上传jdk-8u171-linux-x64.tar.gz到/root目录下,然后…

ChatGPT研究论文提示词集合1-【主题选择与问题研究、文献综述】

点击下方▼▼▼▼链接直达AIPaperPass ! AIPaperPass - AI论文写作指导平台 目录 1.主题选择与问题定义 2.文献综述 3.书籍介绍 AIPaperPass智能论文写作平台 近期小编按照学术论文的流程,精心准备一套学术研究各个流程的提示词集合。总共14个步骤…

论文笔记:Large Language Model for Participatory Urban Planning

202402 arxiv 大模型城市规划 引入了一个基于LLM的多代理协作框架,模拟规划师和数千名具有不同特征和背景的居民,用于参与式城市规划——>生成考虑居民多样化需求的城市区域土地利用规划为了提高讨论的效率,论文采用了鱼缸讨论机制&#…

建筑楼宇VR火灾扑灭救援虚拟仿真软件厂家

在传统消防安全教育方式中,往往存在内容枯燥、参与度低和风险大等问题,使得消防安全知识难以深入人心。然而,借助VR消防安全逃生教育系统,我们可以打破这一困境,为公众带来前所未有的学习体验。 VR消防安全逃生教育系统…

【Web】DASCTF X GFCTF 2024|四月开启第一局 题解

目录 EasySignin cool_index web1234 web4打破防了🤮,应该很接近解出来了,感兴趣的师傅续上吧 EasySignin 先随便注册个账号登录,然后拿bp抓包改密码(username改成admin) 然后admin / 1234567登录 康好康的图片功能可以打SS…

数据采集技术综合项目实战3(网络爬虫+数据预处理+数据可视化)附带详细步骤说明,干货满满

项目介绍及需求: 本项目主要是通过对b站电影弹幕进行采集并分析。1.获得弹幕高频词生成符合该电影特征、主题、角色等相关字段的词云图,通过词云图的方式对某部电影主题具体化。2.获取用户年内评论发布时间观生成时间的折线图,以便从侧面观察…

在Vue项目使用kindEditor富文本编译器以及上传图片

第一步 npm install kindeditor第二步&#xff0c;建立kindeditor.vue组件 <template><div class"kindeditor"><textarea :id"id" name"content" v-model"outContent"></textarea></div> </templa…

02_补充)docker学习 docker在线安装tomcat等,docker容器常用指令

01中安装好docker后&#xff0c;本章学习使用docker拉取tomcat&#xff0c;nginx&#xff0c;jdk等镜像&#xff0c;并创建容器启动测试 常用命令 # 基本信息查看 docker version # 查看docker的版本号&#xff0c;包括客户端、服务端、依赖的Go等 docker info # 查看系统(…

【vue3】插件@tsparticles/vue3、tsparticles实现粒子特效

文章目录 一、安装依赖二、全局引入三、使用 一、安装依赖 npm i tsparticles/vue3 npm i tsparticles二、全局引入 // main.js import Particles from tsparticles/vue3 import { loadFull } from tsparticlesconst app createApp(App) app.use(Particles, {init: async (e…

java泛型知多少

Java 泛型了解么&#xff1f; 泛型是一种在编译时提供类型安全检查的机制,可以增加我们代码的可读性和安全性。泛型可以在编译时期对泛型参数进行校验来指定选入对象的类型&#xff0c;比如 ArrayList<Person> persons new ArrayList<Person>() 这行代码就指明了…

销售经理(多继承/虚基类)

根据下图类之间的继承关系&#xff0c;以及main和输出定义&#xff0c;定义Staff类、Saleman类、Manager类和SaleManager类。 Staff类包含的数据成员有编号&#xff08;num)&#xff0c;姓名&#xff08;name)&#xff0c;基本工资&#xff08;basicSale&#xff09;。Saleman类…