• java当中的强引用,软引用,弱引用,虚引用


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

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

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

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

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

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

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

    WeakReference与SoftReference的区别?

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

  • 相关阅读:
    实战项目-网易
    iOS-Code-Snippet
    iOS父子控制器详解
    (Java) AES-128 数据加密
    (Java) byte[] 和 base64 字符串之间的转换
    关于 mybatis 报invalid comparison: java.util.Arrays$ArrayList and java.lang.String异常
    MUI 混合开发移动app应用开发 --- app版本升级
    MUI错误信息:系统已经存在较高版本,些安装包无法安装。
    找不到 cucumber.api.cli.Main 的报错解决方案
    Mysql 索引类型+索引方法
  • 原文地址:https://www.cnblogs.com/mmzs/p/8022224.html
Copyright © 2020-2023  润新知