强引用,软引用,若引用demo案列

首先创建一个测试的对象 RefrenceStuduet 类,重写toString方法

public class RefrenceStuduet {
    private String name;
    private int age;

    public RefrenceStuduet(String name, int age) {
        this.age = age;
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "学生姓名:"+this.name+" 年龄:"+this.age;
    }
}

然后编写测试代码:

public class Refrence {
    public static void main(String... args) {


        RefrenceStuduet studentA = new RefrenceStuduet("AA",1);
        RefrenceStuduet studentB = new RefrenceStuduet("BB",2);
        RefrenceStuduet studentC = new RefrenceStuduet("CC",3
        );

        //强引用strongStudentA
        RefrenceStuduet strongStudentA = studentA;
        //软引用softStudentB
        SoftReference<RefrenceStuduet> softStudentB = new SoftReference<>(studentB);
        //弱引用weekStudentC
        WeakReference<RefrenceStuduet> weekStudentC = new WeakReference<>(studentC);
        //直接弱引用
        WeakReference<RefrenceStuduet> weekStudentD = new WeakReference<>(new RefrenceStuduet("DD",4));


        //引用都变为null
        studentA = null;
        studentB = null;
        studentC = null;

        //gc之前 输出RefrenceStuduet的toString方法的内容
        System.out.println("Before gc...");
        System.out.println(String.format("strongA = %sn, softB = %s, weakC = %s, weakD = %s", strongStudentA, softStudentB.get(), weekStudentC.get(), weekStudentD.get()));
        System.out.println("Run GC...");
        //执行系统gc
        System.gc();
        //gc之后输出
        System.out.println("After gc...");
        System.out.println(String.format("strongA = %s, softB = %s, weakC = %s, weakD = %s", strongStudentA, softStudentB.get(), weekStudentC.get(), weekStudentD.get()));
    }

}

 运行结果:

Before gc...
strongA = 学生姓名:AA 年龄:1\n, softB = 学生姓名:BB 年龄:2\n, weakC = 学生姓名:CC 年龄:3\n, weakD = 学生姓名:DD 年龄:4\n
Run GC...
After gc...
strongA = 学生姓名:AA 年龄:1\n, softB = 学生姓名:BB 年龄:2\n, weakC = null\n, weakD = null\n

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值