jvmGC算法

在这里插入图片描述

  • 引用计数法
public class RefCountGC {//几乎不用,因为无法解决循环引用的问题
    public Object instance=null;
    private byte[] bigSize=new byte[2*1024*1024];
    public static void main(String[] args) {
        RefCountGC objA=new RefCountGC();
        RefCountGC objB=new RefCountGC();
        objA.instance=objB;
        objB.instance=objA;
        objA=null;
        objB=null;
        System.gc();
    }
}

缺点:计数器算法的一大缺点就是不能解决循环引用的问题;如下图,我们构造了一个列表,我们将最后一个元素的next属性指向第一个元素,即引用第一个元素,从而构成循环引用;这个时候如果我们将列表的头head赋值为null,此时列表的各个元素的计数器都不为0,同时我们也失去了对列表的引用控制,从而导致列表元素不能被回收!
在这里插入图片描述
- 复制算法(copying)
在这里插入图片描述年轻代的GC主要是复制算法在这里插入图片描述原理在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 标记清除算法(Mark-Sweep)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    优缺点:
    在这里插入图片描述
  • 标记压缩(Mark-Compact)
    在这里插入图片描述
    在这里插入图片描述
  • 标记清除压缩(Mark-Sweep-Compact)
    在这里插入图片描述
  • 没有最好的算法,只有合适的算法-分代收集算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值