jvm虚拟机垃圾回收机制

jvm虚拟机垃圾回收机制

一、引用计数法

    原理:引用计数法:当一个对象A,任何一个对象对对象A引用,则A的引用计数器+1,当引用失效时则,A的引用计数器-1。直到A的引用计数器为0,则可以释放。
         **可达对象**:通过跟对象进行引用搜索,最终可以达到的对象;
         **不可达对象**:通过对象引用搜索最终没有被引用到的对象;
    缺点:
        1、无法支持递归调用,对象A引用对象B,对象B又引用对象A;则无法满足回收;递归引用可能导致内存溢出。
        2、每一次对象的引用和失效都伴随着加减法,导致对机器的性能有消耗。
     总结:由于引用计数法存在循环引用和性能问题,jvm并未采用该方法作为垃圾回收机制的算法。

二、标记清除法

   原理:标记清除法:标记阶段和清除阶段,标记阶段通过标记根节点的可达对象;未被标记的对象是未被应用的垃圾对象;清除阶段通过清除为标记的对象;
   缺点:产生的空间碎片很多
   总结:标记清除算法目前jvm垃圾回收算法的思想基础;

三、标记压缩法

  原理:在标记清除法的基础上做优化,主要是在标记清除算法的基础上,将存活的对象压缩到内存的一端,之后清除其他所有的内存空间,达到空间连续性而不是直接清除。
       **新生代**:存放年轻对象的堆空间。新创建的对象,垃圾回收次数不多的对象;
       **老年代**:存放老年对象的空间。经历过多次垃圾回收依旧存活的对象;
  用途:标记压缩法,主要是作为老年代的垃圾回收算法;

四、复制算法

 原理:将原有的内存空间分为两块,每次使用其中一块,在垃圾回首时,将存活的对象复制到另外一块未使用到的内存当中,之后清除正在使用的内存空间所有对象,交换两个内存的角色;
 用途:复制算法,主要作为新生代的垃圾回收算法:
 注意:
        新生代的空间分为三块:eden空间,from空间和to空间;eden为对象创建的空间都在里面,而from空间和to空间可以互换,通常也称survivor空间,主要用于存放未被处理的空间对象。

五、分代算法

 原理:分代算法,根据内存区间的对象特性分成几块,根据每块内存区间的特性使用不同回收算法,以提高垃圾回收效率。
 缺点:一次性回收太多内存会出现卡顿,堆空间释放越多,一次gc的市场也就越长;
 用途:
         新生代采用:复制算法;
         老年代采用:标记压缩算法,标记清除算法。

六、分区算法

 原理:分区算法是将整个堆空间划分成连续的不同小区间。每个小区间都是独立使用,独立回收。
 优点:可以控制一次回收多少个小区间。
 用途:jvm回收机制当中采用小区间的方式,可以控制每次gc过程当中的区间内存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值