1.垃圾判断算法:
引用计数法:给每个对象添加一个计数器,当又地方引用该对象时计时器加1,当引用失效时计数器减1.

缺点:无法解决循环引用的问题
new一个对象对内存引用,然后将对象设置为null时,引用计数算法中,内容就要被回收new ReferenceCountingGC

2.可达性分析算法:
通过GC Root对象作为搜索起始点,通过引用向下搜索,所走过的路径为引用链。通过对象是否又到达引用链的路径来判断对象是否可被回收,解决技术所无法解决的循环依赖问题。缺点那个属于GC root
jvm回收机制
3.标记清除算法:它分为2部分,先把内存区域中的这些对象进行标记,那些属于可回收标记出来,然后把这些垃圾领出来清理掉
jvm回收机制
复制算法:
是在标记清除算法基础上,解决标记清除算法的内存碎片问题,它可用内存按容量划分为大小相等的两块,每次只使用其中一块。当这一块内存用完了,他将还存活着对象复制到;另一块,然后再把已使用过的一次清除掉。
缺点:硬盘500,却只能用200g
jvm回收机制
分代收集算法:3种算法融合新生代,垃圾收集时,大批量死去对象,只少量存活,就复制算法,老年代,对象存活率高,就必须用标记清理算法或标记整理算法回收

内存区域与回收策略:对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中(大对象直接分到老年代)

对象优先在Eden分配:对象会在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机会发起一次 Minor GC。Minor GC相比Major GC更频繁,回收速度也更快。通过Minor GC之后,Eden区中绝大部分对象会被回收,而那些存活对象,将会送到Survivor的From区(若From区空间不够,则直接进入Old区) 。

survivor区:Survivor区相当于是Eden区和Old区的一个缓冲,类似于我们交通灯中的黄灯。Survivor又分为2个区,一个是From区,一个是To区。每次执行Minor GC,会将Eden区中存活的对象放到Survivor的From区,而在From区中,仍存活的对象会根据他们的年龄值来决定去向。(From Survivor和To Survivor的逻辑关系会发生颠倒: From变To , To变From,目的是保证有连续的空间存放对方,避免碎片化的发生)

Survivor区存在的意义:
如果没有Survivor区,Eden区每进行一次Minor GC,存活的对象就会被送到老年代,老年代很快就会被填满。而有很多对象虽然一次Minor GC没有消灭,但其实也并不会蹦
跶多久,或许第二次,第三次就需要被清除。这时候移入老年区,很明显不是一个明智的决定。所以,Survivor的存在意义就是减少被送到老年代的对象,进而减少Major GC的发生。Survivor的预筛选保证,只有经历16次Minor GC还能在新生代中存活的对象,才会被送到老年代。

大对象直接进入老年代:虚拟机提供了一个XX:PretenureSizeThreshold参数,令大于这个设置值的对象直接在老年代分配,这样做的目的是避免在Eden区及两个Survivor区之间发生大量的内存复制(新生代采用的是复制算法)。

长期存活的对象将进入老年代:虚拟机给每个对象定义了一个对象年龄(Age)计数器,如果对象在Eden出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中(正常情况下对象会不断的在Survivor的From与To区之间移动),并且对象年龄设为1。对象在Survivor区中每经历一次Minor GC,年龄就增加1岁,当它的年龄增加到一定程度(默认15岁),就将会晋升到老年代中。对象晋升老年代的年龄阈值,可以通过参数 XX:MaxPretenuringThreshold 设置。

动态对象年龄判定
为了能更好地适应不同程度的内存状况,虚拟机并不是永远地要求对象的年龄必须达到 MaxPretenuringThreshold才能晋升老年代,如果Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于改年龄的对象就可以直接进入老年代,无需等到MaxPretenuringThreshold中要求的年龄。

相关文章:

  • 2021-03-31
  • 2022-01-10
猜你喜欢
  • 2021-07-26
  • 2021-11-20
  • 2021-11-25
  • 2021-11-10
  • 2021-08-31
  • 2021-09-13
  • 2021-10-06
相关资源
相似解决方案