强引用,软引用,弱引用

一、软引用和弱引用的用法

软引用(SoftReference)的含义是,如果一个对象只具有软引用,而当前虚拟机堆内存空间足够,那么垃圾回收器就不会回收它,反之就会回收这些软引用指向的对象。

弱引用(WeakReference)与软引用的区别在于,垃圾回收器一旦发现某块内存上只有弱引用(一定请注意只有弱引用,没强引用),不管当前内存空间是否足够,那么都会回收这块内存。

见如下实例

 public static void main(String[] args) {
        String str = new String("abc");    //强引用
        SoftReference<String> softReference = new SoftReference<>(str); //软引用
        str = null;    //去掉强引用
        System.gc();   //垃圾回收器进行回收
        System.out.println(softReference.get());
        String strNew = new String("123");

        WeakReference<String> weakReference = new WeakReference<>(strNew);//弱引用
        strNew = null;
        System.gc();
        System.out.println(weakReference.get());
    }

运行结果如下图

运行结果正好对应了前面软引用和弱引用的知识点。

全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务