jvm 07 GC算法,内存池
创始人
2025-01-08 15:36:38
0

01 垃圾判断算法
1.1引用计数算法

最简单的垃圾判断算法。  在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数+1, 当引用失效时,计数-1,如果计数=0,表示没有其他对象引用,就可以被回收。  这个算法无法解决循环依赖的问题。 

在这里插入图片描述
1.2 可达性分析算法

通过一系列被称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系链向下搜索, 如果某个对象无法被搜索到,则说明该对象无引用执行,可回收。相反,则对象处于存活状态,不可回收。  JVM中的实现是找到存活对象,未打标记的就是无用对象,GC时会回收。 

在这里插入图片描述
02.垃圾回收算法

2.1标记-清除算法

标记:Collector 从引用根节点开始遍历,标记所有被引用的对象。一般是在对象的 Header 中记录为可达对象。标记的是引用的对象,不是垃圾!!

清除:Collector 对堆内存从头到尾进行线性的遍历,如果发现某个对象在其 Header中 没有标记为可达对象,则将其回收。
在这里插入图片描述

 不足: 1效率问题:标记和清除两个过程的效率都不高。  2空间问题:标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要 分配较大对象时,无法找到足够的连续内存而不得不提前出发另一次垃圾收集动作。 

2.2 复制算法(Copying)
1将原有的内存空间分为两块,每次只使用一块,

2在垃圾回收时,将正在使用的内存中的存活对象复制到未被使用的内存块中,然后清除正在使用的内存块中的所有对象。

3交换两个内存的角色,完成垃圾回收。在这里插入图片描述

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

1标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的为垃圾对象

2整理阶段:将所有的存活对象压缩到内存的一段,之后清理边界外所有的空间
在这里插入图片描述
标记-压缩算法

 适合用于存活对象较多的场合,如老年代。   它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-压缩算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。 

在这里插入图片描述

相关内容

热门资讯

推荐一下!青橙竞技卡五星辅助,... 推荐一下!青橙竞技卡五星辅助,新518互游脚本下载,好像是真的有挂(哔哩哔哩)青橙竞技卡五星辅助透视...
总结一下!老友广东麻将辅助,杭... 总结一下!老友广东麻将辅助,杭州都莱辅助,切实真的是有挂(哔哩哔哩)1、在老友广东麻将辅助插件功能辅...
解迷一下!创思维激k怎么开挂,... 解迷一下!创思维激k怎么开挂,创思维辅助软件,切实真的有挂(哔哩哔哩)1、创思维激k怎么开挂辅助器安...
辅助一下!微信微乐游戏辅助脚本... 辅助一下!微信微乐游戏辅助脚本,拱趴大菠萝有辅助吗,总是有挂(哔哩哔哩)辅助一下!微信微乐游戏辅助脚...
辅助一下!时光互娱房卡辅助,新... 辅助一下!时光互娱房卡辅助,新漫游免费辅助器,本来真的有挂(哔哩哔哩)1、让任何用户在无需时光互娱房...
关于一下!多乐跑得快私人房间作... 关于一下!多乐跑得快私人房间作弊视频,来来拼十辅助,都是真的有挂(哔哩哔哩)1、打开软件启动之后找到...
教你一下!卡五星游戏源码,决战... 教你一下!卡五星游戏源码,决战卡五星辅助器,其实是有挂(哔哩哔哩)1)决战卡五星辅助器辅助插件:进一...
普及一下!同乡游有辅助软件码,... 普及一下!同乡游有辅助软件码,老友广东辅助器,总是是有挂(哔哩哔哩)1、上手简单,内置详细流程视频教...
曝光一下!创思维激k有辅助器吗... 曝光一下!创思维激k有辅助器吗,hhpoker辅助是真的吗,好像存在有挂(哔哩哔哩)创思维激k有辅助...
总结一下!边锋干瞪眼小程序辅助... 总结一下!边锋干瞪眼小程序辅助,心悦踢辅助软件,真是存在有挂(哔哩哔哩)1、这是跨平台的边锋干瞪眼小...