最新要闻
- 焦点快报!银行发现7位数存款5年未动急寻人:联系电话是空号
- 每日热文:RTX 4090与RTX 3080 Ti移动旗舰显卡大PK:没想到性能差距巨大
- 自动驾驶为啥这么难!技术问题?还是方向错了?
- 每日视点!T-1000未来或成真!《终结者》之父:AI太强可以造成世界末日
- 焦点消息!被狗抓破是否会得狂犬病上热搜:博主“科普”网友纷纷不认账
- 环球热点评!皇马这批人如果拿到6个欧冠,历史地位也没变化?受害者只有C罗?
- 环球短讯!华为5G回来了?余承东体验AITO问界M5智驾版:重大更新引人遐想
- 疯狂白菜价 DDR5正式跌破百元 国产枭鲸8GB内存只要99.9元
- 全球观热点:表现持平GPT-4!知乎“知海图AI”投入内测
- 《终结者》之父卡梅隆:AI太厉害将能造成世界末日
- 环球速读:云南万人大型泼水现场互送祝福:欢度泼水节
- 焦点报道:许昌市东城区:普法宣传进校园 精心护苗筑平安
- 【全球时快讯】NVIDIA最新调查:80%的RTX 40系显卡用户会启用光追和DLSS
- 【天天播资讯】侧透玻璃机箱!微星海皇戟AS台式机上新:i7+RTX 4070
- 世界新消息丨同跑硬件杀手《赛博朋克2077》 RTX 4080与RTX 4090有多大差距?
- 世界今日讯!Win掌机不用指头戳屏幕了!Win12有望加入“掌机模式”
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日关注!Java GC基础知识
1 对象存活判断
1.1 引用计数
在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可 能再被使用的
(资料图)
引用计数法的缺陷:
public class ReferenceCountingGC { public Object instance = null; private static final int _1MB = 1024 * 1024; /** * 这个成员属性的唯一意义就是占点内存,以便能在GC日志中看清楚是否有回收过 */ private byte[] bigSize = new byte[2 * _1MB]; public static void testGC() { ReferenceCountingGC objA = new ReferenceCountingGC(); ReferenceCountingGC objB = new ReferenceCountingGC(); objA.instance = objB; objB.instance = objA; objA = null; objB = null; // 假设在这行发生GC,objA和objB是否能被回收? System.gc(); }}
如果使用引用计数法,objA
和objB
除互相引用外没有任何其他引用,但是无法被回收。
1.2 可达性分析
通过一些了
GC Roots
的根对象作为起点集,根据引用关系向下搜索,搜索过程所走过的路径称为引用链,如果某个对象和GC Roots
之间没有任何引用链,则该对象不可达,需要被回收。
GC Roots 对象
- 虚拟机栈(局部变量表)中引用的对象
- 方法区中静态属性引用的对象
- 方法区在常量引用的对象
- 本地方法栈中Native方法引用的对象
- Java虚拟机内部的引用
- 被同步锁持有的对象
- 等等
Java 引用
引用类型 | 描述 |
---|---|
强引用 | Object obj = new Object(); 垃圾回收器永远不会回收强引用对象 |
软引用 | SoftReference; 系统发生内存溢出异常前,会回收软引用对象 |
弱引用 | WeakReference; 无论内存是否足够,垃圾回收时都会回收弱引用对象 |
虚引用 | PhantomReference; 该对象设置虚引用关联,唯一目的是该对象被回收时会收到一个系统通知 |
1.3 并发可达性分析
可达性分析在并发环境下存在的问题
问题1: 原本消亡的对象错误标记为存活对象(可容忍) 问题2: 原本存活的对象错误标记为消亡对象(不可容忍,导致程序出错)可达性分析过程 —— 三色标记
- 黑色节点: 对象已经被垃圾收集器访问过,且该对象的所有引用均已扫描
- 灰色节点: 对象已经被垃圾收集器访问过,但该对象至少还有一个引用未被扫描
- 白色节点: 对象尚未被垃圾收集器访问,可达性分析结束后,节点仍然为白色,则标识该对象不可达
问题2出现的原因:同时满足以下两个条件
- 并发标记期间程序增加一条或多条黑色对象到白色对象的引用
- 并发标记期间删除了所有灰色对象到该白色对象的直接或间接引用,所以该对象无法被垃圾收集器访问到,导致误标记为消亡对象
因为黑色对象已经不会再被访问,所以新增的引用无法生效;同时删除了所有其他灰色对象到该白色对象的直接或间接引用,所以该对象无法从其他引用链访问到,导致存活对象被错误标记为消亡对象。
解决方案
- 增量更新: 当黑色对象插入新的指向白色对象的引用关系时,就将这个新插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。如CMS垃圾回收器。
- 原始快照: 当灰色对象要删除指向白色对象的引用关系时,就将这个要删除的引用记录下来,在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根,重新扫描一次。如G1垃圾回收器
2 垃圾回收算法
2.1 标记-清除算法
主要分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象
存在的缺陷:
- 执行效率不稳定,随着标记对象数量的增长而降低
- 内存空间碎片化问题,标记-清除会产生大量不连续的内存碎片
2.2 标记-复制算法
将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。
当某一块内存快用完了,就将存活的对象复制到另一块内存上,然后把原来的内存空间直接清理即可。
相较于标记-清除算法的优点:
- 每次针对一个半区进行清理,不会产生碎片化的内存空间
存在的缺陷:
- 如果内存中多数对象都是存活对象,则会产生大量的内存间复制开销
- 将可用内存缩小为原来的一半,空间利用率低
现代Java虚拟机大多采用标记-复制算法回收新生代,因为新生代中只有极少数对象会存活。
2.3 标记-整理算法
首先标记出所有需要回收的对象;让所有存活对象向内存空间的一侧移动,最后清理掉边界以外的内存。
存在的缺陷:
- 移动存活对象并更新所有引用这些对象的地方是极为负重的操作,而且这种对象移动操作必须暂停用户程序才能进行(Stop The World)
3垃圾回收器
3.1 CMS收集器
Concurrent Mark Sweep(CMS) 收集器是一种以获取最短回收停顿时间(STW)为目标的收集器。该回收器基于标记-清除算法实现。
CMS收集器工作过程
- 初始标记(STW): 标记
GC Roots
能直接关联到的对象,速度很快 - 并发标记: 从
GC Roots
直接关联对象开始遍历整个对象图,不需要停顿用户线程 - 重新标记(STW): 修正并发标记,增量更新
- 并发清除: 清理掉所有消亡对象
CMS收集器由于使用并发-清除算法回收,会产生大量的内存空间碎片,可用暂时容忍;当内存空间的碎片化程度影响到对象分配时,再采用一次标记-整理算法,以获得规整的内存空间。
3.2 G1收集器
Grabage First(G1) 收集器开创了面向局部收集的设计思路和基于Region的内存布局形式。
基于 Region 的堆内存布局
把连续的Java堆划分为多个大小相等的独立区域(Region),每一个 Region 都可用根据需分配给新生代Eden空间、Suvivor空间或者老年代空间。收集器对不同空间的 Region 块采用不同的策略处理。
Region 中还有一类特殊的 Humongous 区域(被视为老年代的一部分),专门用于存储大对象。G1认为只要大小超过一个Region块容量一半的对象就是大对象。每个 Region 大小为
1M ~ 32M
,对于超过了整个 Region 容量的超级大对象会被存储到N个连续的Humongous Region块中。G1虽然仍然保留了新生代和老年代的概念,但新生代和老年代的空间和位置不再是固定的,是一系列Region的集合。
G1收集器工作过程
- 初始标记(STW): 标记
GC Roots
能直接关联到的对象 - 并发标记: 从
GC Roots
直接关联对象开始遍历整个对象图,不需要停顿用户线程 - 最终标记(STW): 处理并发标记阶段结束后仍然遗留下来的STAB(原始快照)记录
- 筛选回收: 对各个Region块的回收价值和成本进行排序,根据期望的停顿时间指定回收计划,可用自由选择任意多个Region回收,然后将被回收的Region块中存活的对象复制到空的Region中
参考文章
- 深入理解Java虚拟机第3版
关键词:
每日关注!Java GC基础知识
天天微资讯!KMP(字符串匹配算法)
焦点快报!银行发现7位数存款5年未动急寻人:联系电话是空号
每日热文:RTX 4090与RTX 3080 Ti移动旗舰显卡大PK:没想到性能差距巨大
自动驾驶为啥这么难!技术问题?还是方向错了?
每日视点!T-1000未来或成真!《终结者》之父:AI太强可以造成世界末日
焦点消息!被狗抓破是否会得狂犬病上热搜:博主“科普”网友纷纷不认账
当前热门:三分钟完成静态网站托管
每日视讯:ChatGPT吃我饭,还要掀我碗
cookies、sessionStorage与localStorage在Vue中的使用
有关拦截器拦截指定的url并作出处理返回数据
环球热点评!皇马这批人如果拿到6个欧冠,历史地位也没变化?受害者只有C罗?
环球短讯!华为5G回来了?余承东体验AITO问界M5智驾版:重大更新引人遐想
疯狂白菜价 DDR5正式跌破百元 国产枭鲸8GB内存只要99.9元
全球观热点:表现持平GPT-4!知乎“知海图AI”投入内测
《终结者》之父卡梅隆:AI太厉害将能造成世界末日
环球速读:云南万人大型泼水现场互送祝福:欢度泼水节
全球即时:全栈混合云综合架构方案研究和落地
环球观热点:详解GaussDB(DWS)的query_band负载识别与应用
快看:零基础快速入门WebRTC:基本概念、关键技术、与WebSocket的区别等
【世界时快讯】Java集成工作流审批机制,多个项目实际运用优化版本(干货)
世界快播:Natasha入门(一)
环球观热点:恒生指数13日收涨0.13% 生物医药行业领涨
焦点报道:许昌市东城区:普法宣传进校园 精心护苗筑平安
【全球时快讯】NVIDIA最新调查:80%的RTX 40系显卡用户会启用光追和DLSS
【天天播资讯】侧透玻璃机箱!微星海皇戟AS台式机上新:i7+RTX 4070
世界新消息丨同跑硬件杀手《赛博朋克2077》 RTX 4080与RTX 4090有多大差距?
世界今日讯!Win掌机不用指头戳屏幕了!Win12有望加入“掌机模式”
世界微动态丨下周一!国内油价预计涨0.44元/升 或创今年最大涨幅
尼尔森IQ:中国消费市场回暖 绿色变革赋能品牌可持续增长
天天速读:MegEngine 使用小技巧:使用 Optimizer 优化参数
每日动态!图片压缩&视频截取
全球观速讯丨Mac | iOS | Windows:安装Stable diffusion教程
世界短讯!科创板收盘播报:科创50指数低开低走跌2.59% 软件服务及半导体股跌幅居前
世界热讯:简历上写QQ邮箱会掉分吗引热议 网友:邮箱也分三六九等?
全焦段光学覆盖!小米13 Ultra影像参数公布:1+3黄金组合
环球消息!4999元起 荣耀MagicBook 14 2023笔记本发布:5项世界第一
天天即时:优酷回应非会员遇3000多秒广告:bug已修复 是文案显示问题
iPhone 15 Pro固态按键设计临时改了!只因难度太大
天天最资讯丨动态代理与Spring AOP
在LINQPad中使用FreeSql查询数据库
minio分片上传
12函数进阶
环球快看点丨[Docker]Namespace与Cgroups
快看:本周最火AutoGPT!GitHub3.6万+标星:解决复杂任务全程无需人类插手
环球微速讯:性能升级 13代酷睿来了? 华为MateBook笔记本新品即将发布
曾力推每天睡4小时 张朝阳建议年轻人别睡懒觉不要熬夜
每日动态!李书福抢跑马斯克发小钢炮!冰箱彩电大沙发全标配:理想直呼内行
【环球热闻】售价高达15000元!宾得专为黑白摄影推出K-3 Mark III Monochrome
金色的草地课文朗读音频_金色的草地课文
焦点精选!论结构化、系统性的学习
【天天热闻】RocketMQ是是如何管理消费进度的?又是如何保证消息成功消费的?
【天天聚看点】C# 根据前台传入实体名称,动态查询数据
每日关注!电商流量分析怎么做?试试这款数据工具 DataLeap!
Intel突然杀死服务器整机业务!新CEO连砍十余刀挽救亏损
马保国直播带货现演“闪电五连鞭”:销量惨淡 网友只看不买
手把手教你如何免费Midjourney Adobe FireFly AI绘图—Window本地快速部署stable diffusion AI绘图及使用指南(小白
克里克森_克里克拉克
每日速递:日本部分地区出现大量黄沙:能见度不足10公里
环球热点!高颜值!关晓彤晒华为nova 11:本月发
每日资讯:开启影像光学新时代!小米13 Ultra搭载全焦段5000万像素徕卡四摄
真反向虚标!实测比亚迪秦PLUS EV冠军版:标610开出646.5
5.98万起真不贵!五菱缤果上市两周狂卖10000台:再成爆款
【3D建模工具】上海道宁与McNeel为您提供强大的专业3D造型软件
环球快资讯丨学系统集成项目管理工程师(中项)系列04c_项目管理一般知识(下)
【大兴调查研究】临夏税务:“把脉问诊”助企纾困
今日热闻!新款特斯拉Model 3实车首曝:大灯更精神、颜值再提升
焦点短讯!张艺谋:《满江红》票房让我很意外 20亿就是伟大胜利
观热点:美曾通报生物实验室感染病毒的小白鼠逃了:去年还发生实验猴逃窜
世界快看:5.58万起 五菱荣光新卡上市:2.0L动力、3.3米货厢
当前看点!微信推送8.0.35测试版:和Android 5.0说再见
华硕A52J笔记本最大存储空间是多少?华硕a52j笔记本参数
金立GN105手机怎么换屏幕?金立gn105手机参数配置
ATI HD4500是集成显卡吗?ATI HD4500参数配置
华硕y581c是什么系列?华硕y581c笔记本电脑配置
苹果iPhone7有几种颜色?苹果iphone7怎么截长图?
环球速递!《梦西游》4月14日合服维护公告
环球快消息!C#--TextBox的四种禁止编辑方法
热点评!4月22日,云数据库技术沙龙【杭州站】来了
用java做一个并发10W的网站,需要用到的技术有这些!
释放1英寸全部实力!小米13 Ultra支持可变光圈:重金打造
埃安Hyper GT摊牌了:比特斯拉贵 但你会选我
广东惠东发现“世界最神秘的鸟”:中国特产、比大熊猫还稀少
世界通讯!《名侦探柯南》优衣库联名T恤引争议 柯哀党PK新兰党
观焦点:小米平板6系列正式官宣:5000万摄像头 超强生产力工具
环球微速讯:093期杨光福彩3D预测奖号:定位直选参考
天天时讯:百度文心大模型API测试
世界通讯!浅析DNS Rebinding
Linux运维进阶之路
环球观点:美国通胀降温 油价随宽松预期下上行
天天日报丨男子要求抹零被拒与店员起争执 就为10元打女服务员:网友吐槽没必要
世界快资讯:打车去拉萨的超远订单显著增加 车费超1.3万 滴滴:希望大家理性下单
每日动态!曾是第一大股东 软银抛售阿里巴巴股份:快清空了
世界热资讯!剧版《哈利·波特》官宣 先导预告发布:JK罗琳监制 忠于原著的十年大剧
每日速递:和iPhone一样四边等宽!华为nova 11正面照泄露
天天报道:1、内网渗透基础知识
4月13日生意社二氯甲烷基准价为2607.50元/吨
【国际大宗商品早报】国际油价显著上涨超2% 基本金属全线走高
喊话北京打车太便宜应涨价!乘联会秘书长:燃油车用户纳税但未享受权益
世界速看:中老铁路首趟国际旅客列车发车:昆明当日通达万象 二等座470元