强引用,软引用,弱引用

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

软引用(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());
    }

运行结果如下图

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

全部评论

相关推荐

07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务