zoukankan      html  css  js  c++  java
  • java当中的强引用,软引用,弱引用,虚引用

    强引用,软引用,弱引用,虚引用:不同的引用类型主要体现在GC上

    1. 强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。

    2. 软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。

    3. 弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象

    4. 虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。

    5. 只有强引用不可断开引用链,其余的软引用、弱引用、影子引用都是可以断链的;
    6. 强引用是说这个对象被另一个对象强相关,该对象不可被GC,而弱引用对象在内存吃紧时可以被GC释放引用从而回收内存空间。

    java中的引用只有一种:一切皆为值(包括地址值),传递有两种:引用传递和值传递

    WeakReference与SoftReference的区别?

    这点在四种引用类型中已经做了解释,这里简单说明一下即可: 虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。

  • 相关阅读:
    Harbor-企业级Registry服务器安装配置和使用(图解)
    kubernetes(k8s)kubectl使用详解
    prometheus和zabbix的对比
    kubernetes学习:CKA考试题
    k8s网络之Flannel网络
    k8s网络主题系列:Flannel和Calico
    kubernetes基础概念
    CoreDNS系列1:Kubernetes内部域名解析原理、弊端及优化方式
    解析记录格式
    五月七号日报
  • 原文地址:https://www.cnblogs.com/mmzs/p/8022224.html
Copyright © 2011-2022 走看看