网易首页 > 网易号 > 正文 申请入驻

Java 可达性分析算法

0
分享至

Java 中的可达性分析(Reachability Analysis)是一种确定对象是否可以被垃圾回收器回收的算法。该算法基于从一些称为“GC Roots”(垃圾收集根)的对象开始,遍历整个对象图,从而决定哪些对象是可达的(即仍在使用中)以及哪些对象是不可达的(即不再被使用,可以被回收)。

GC Roots 的定义

GC Roots 是垃圾回收过程中的起点对象,它们是一组可以直接或间接被 JVM 访问的对象集合,没有 GC Roots 引用的对象则被认为是不可达的。GC Roots 包括但不限于以下几类:

  1. 虚拟机栈中引用的对象:局部变量表中的对象引用。

  2. 本地方法栈中引用的对象:JNI(Java Native Interface)中引用的本地对象。

  3. 方法区中常量引用的对象:例如字符串字面量和类静态变量所引用的对象。

  4. 方法区中静态属性引用的对象:类的静态字段所引用的对象。

  5. 运行时常量池引用的对象:例如字符串字面量的引用。

  6. 其他系统级的引用:如 Java 虚拟机内部的某些特殊对象,如线程对象、类加载器对象等。

可达性分析过程
  1. 识别 GC Roots:首先,JVM 会确定所有活跃的 GC Roots 对象。

  2. 遍历对象图:从 GC Roots 开始,沿着它们的引用关系向下遍历,能够被遍历到的对象被视为可达的,即还在使用的对象。

  3. 标记不可达对象:未被遍历到的对象被认为是不可达的,意味着它们不再被任何可达对象引用。

  4. 准备回收:虽然对象被标记为不可达,但还不一定会立即被回收。在 HotSpot 虚拟机中,不可达的对象需要经过至少两次标记过程确认确实无法逃脱回收的命运,特别是在存在finalize()方法可能复活对象的情况下。

OopMap 优化

在 HotSpot 虚拟机中,为了加速可达性分析过程,特别是根节点枚举阶段,使用了一种称为 OopMap(Ordinary Object Pointer Map)的数据结构。OopMap 记录了堆中对象内存区域中哪些位置存放着对象的引用,这样垃圾收集器在扫描时可以直接定位到引用的位置,而无需遍历整个方法区或栈空间,大大提高了效率。

finalize() 方法与自救

即使对象在可达性分析中被标记为不可达,它仍然有机会通过覆盖Object类的finalize()方法来自救。在对象被回收前,JVM 会调用这个方法,如果在这个方法中对象重新与 GC Roots 建立了关联,则对象可以避免被回收。但这种自救机制不建议使用,因为它会影响垃圾回收的性能,并且finalize()方法已被标记为不鼓励使用并在未来版本中可能会被移除。

垃圾回收算法

Java垃圾回收(Garbage Collection, GC)算法是Java虚拟机(JVM)用于自动管理内存的重要组件,其目标是自动回收不再使用的对象所占用的内存空间,以防止内存泄漏和提高内存利用率。以下是几种常见的Java垃圾回收算法:

  1. 标记-清除(Mark-Sweep)算法

  • 这是最基础的垃圾回收算法,分为两个阶段:首先标记出所有需要回收的对象,然后统一回收这些被标记的对象。该算法简单,但有两个主要缺点:一是效率不高,标记和清除两个过程都需要遍历内存;二是会产生内存碎片,影响大对象的分配。

复制(Copy)算法

  • 该算法将可用内存分为两块,每次只使用其中一块。当一块内存用完,就将还存活的对象复制到另一块上面,然后一次性清理掉已使用过的那块内存。这样做的好处是可以消除内存碎片,但缺点是内存的有效使用率降低到了原来的一半。

标记-整理(Mark-Compact)算法

  • 结合了标记-清除算法和复制算法的优点。同样首先标记出所有需要回收的对象,然后将所有存活的对象压缩到内存的一端,再清理掉边界外的内存。这样既解决了内存碎片问题,又不需要牺牲一半的内存空间。

分代收集算法

  • Java堆内存通常被划分为新生代和老年代。新生代对象存活时间短,频繁回收,适合使用复制算法;老年代对象存活时间长,回收频率低,适合使用标记-清除或标记-整理算法。分代收集是上述算法的组合使用,是现代JVM中最常用的垃圾回收策略。

在实际应用中,JVM会根据不同的场景选择合适的算法或它们的变种。例如,HotSpot JVM就实现了多种垃圾收集器,包括但不限于Serial、Parallel、CMS(Concurrent Mark-Sweep)和G1(Garbage First),每种收集器可能采用不同的垃圾回收算法组合,以达到最佳的性能表现。

此外,Java 9及之后版本引入了ZGC和Shenandoah等新的垃圾收集器,进一步优化了垃圾回收的效率和暂停时间。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
主板IPO丨浙能燃气等待注册生效,毛利率低于同行,现金流充裕募资必要性存疑

主板IPO丨浙能燃气等待注册生效,毛利率低于同行,现金流充裕募资必要性存疑

时代商学院
2024-06-16 17:03:17
经济下行时谁在闷声发大财?日本房地产泡沫破裂后这些行业迅速兴起

经济下行时谁在闷声发大财?日本房地产泡沫破裂后这些行业迅速兴起

日本物语
2024-06-16 20:39:24
乌方不准进入俄本土,俄罗斯不准使用核武器是瑞士峰会的真正意图

乌方不准进入俄本土,俄罗斯不准使用核武器是瑞士峰会的真正意图

笔墨V
2024-06-16 23:38:15
网传多地赴日旅游签证被拒,铁头遭舆论反噬:一个老鼠坏了一锅汤

网传多地赴日旅游签证被拒,铁头遭舆论反噬:一个老鼠坏了一锅汤

刚哥说法365
2024-06-16 18:02:48
打败美元的不是人民币,而是电动汽车?73%石油进口的我们没退路

打败美元的不是人民币,而是电动汽车?73%石油进口的我们没退路

股海风云大作手
2024-06-15 18:28:27
伊万敲定国足出征18强赛大名单,多张新面孔入选,艾克森意外无缘

伊万敲定国足出征18强赛大名单,多张新面孔入选,艾克森意外无缘

罗掌柜体育
2024-06-16 20:45:49
能否破格录取姜萍?浙大、港中大回应

能否破格录取姜萍?浙大、港中大回应

新民晚报
2024-06-16 09:53:22
成名真的太早下下届2030世界杯,16岁亚马尔甚至还是U23球员

成名真的太早下下届2030世界杯,16岁亚马尔甚至还是U23球员

直播吧
2024-06-16 14:43:14
F16进场第一件事就是和宇内第一S500碰一下,会如何?

F16进场第一件事就是和宇内第一S500碰一下,会如何?

邵旭峰域
2024-06-15 14:00:02
6月第1周汽车销量榜,比亚迪销量遥遥领先,特斯拉反超奔驰宝马

6月第1周汽车销量榜,比亚迪销量遥遥领先,特斯拉反超奔驰宝马

财经老庄
2024-06-14 05:54:23
闹大了!张海波爆料樊小慧曾是坐台小姐,惊人聊天记录曝光!

闹大了!张海波爆料樊小慧曾是坐台小姐,惊人聊天记录曝光!

小毅讲历史
2024-06-16 19:51:07
俄罗斯空袭基辅,北约战机接连升空,普京用行动试出了西方的底线

俄罗斯空袭基辅,北约战机接连升空,普京用行动试出了西方的底线

晓辉观点
2024-06-16 18:00:20
如果你是55-70岁的退休族,就一定牢记下面15条,你会受到启发的

如果你是55-70岁的退休族,就一定牢记下面15条,你会受到启发的

爱情大使馆
2024-06-16 10:00:43
头部主播也卖不动了,抖音有点慌

头部主播也卖不动了,抖音有点慌

品牌营销官
2024-06-14 19:32:38
国足豪赌世界杯!足协锁定巴西外援 最快1月完成归化

国足豪赌世界杯!足协锁定巴西外援 最快1月完成归化

球事百科吖
2024-06-16 16:34:09
新冠疫后,罕见癌症大增

新冠疫后,罕见癌症大增

霹雳炮
2024-06-13 23:40:49
22年无缘冠军!五星巴西告别美加墨世界杯?网友:人才严重断档

22年无缘冠军!五星巴西告别美加墨世界杯?网友:人才严重断档

体坛知识分子
2024-06-16 06:05:03
G7背书,再用瑞士峰会推高,之后F-16进入,反攻就开始了

G7背书,再用瑞士峰会推高,之后F-16进入,反攻就开始了

邵旭峰域
2024-06-15 11:59:20
历史会记住这一天

历史会记住这一天

西楼饮月
2024-06-16 20:49:06
豪华!足协获18人归化名单,正在归化奥斯卡,29岁巴西名将也有戏

豪华!足协获18人归化名单,正在归化奥斯卡,29岁巴西名将也有戏

小豆豆赛事
2024-06-16 17:29:45
2024-06-17 00:20:49
君伟说
君伟说
分享职场故事
226文章数 48关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

欧洲猪肉业界:中国若限制进口将是梦魇

头条要闻

欧洲猪肉业界:中国若限制进口将是梦魇

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

旅游
家居
游戏
公开课
军事航空

旅游要闻

@毕业生,江苏这些景区可享免票或优惠

家居要闻

空谷来音 朴素留白的侘寂之美

Xbox《发条革命》发售日泄露?开发商发表情包调侃

公开课

近视只是视力差?小心并发症

军事要闻

以军宣布在加沙南部实行"战术暂停"

无障碍浏览 进入关怀版