• Java中的四种引用及其应用场景是什么


    1.强引用:

      通常我们使用new操作符创建一个对象时所返回的引用即为强引用。强引用即使当前的内存不足也不会被回收而是由JVM抛出OutOfMemoryError 错误。如果想要中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。

    String str = "hello";    // 强引用
    str = null;              // 取消强引用
    

    2.软引用

      内存空间足够的时候则正常使用,内存空间不足的时候则会被垃圾回收器回收可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap

    SoftReference<String> softName = new  SoftReference<>("张三");
    

    3.弱引用

      每当JVM进行垃圾回收的时候不管内存空间是否充足都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象。同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收

    WeakReference<String> weakName = new WeakReference<String>("hello");
    

    4.虚引用

      虚引用是Java中最“弱”的引用,在任何时候都可能被垃圾回收器回收。通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。

    ReferenceQueue<String> queue = new ReferenceQueue<String>();
    PhantomReference<String> pr = new PhantomReference<String>(new String("hello"), queue);
    

      

  • 相关阅读:
    多元高斯分布(斯坦福machine learning week 9)
    异常检测(斯坦福machine learning week 9)
    Python编码透析
    nlp Python库之pynlpir
    降维(斯坦福machine learning week 8)
    主成分分析PCA之协方差矩阵的理解
    聚类(斯坦福machine learning week 8)
    svm之使用SVM(斯坦福machine learning week 7)
    java泛型总结
    Java之IO流学习总结
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/12247160.html
Copyright © 2020-2023  润新知