zoukankan      html  css  js  c++  java
  • java——强引用、软引用、弱引用、虚引用区别

    我自己的理解:

    其实 ,这个就是针对java的对象,每个对象都在堆上都占有自己的内存空间

    然后,关键是垃圾回收机制什么时候回收这个对象。(为什么要被回收,是因为每个应用程序的内存有限)

    分情况考虑:

    1.强引用:

    当这个对象被强引用时,就算出现空间内存不足,也要出现oom的情况

    2.软引用:

    当这个对象被软引用时,一般垃圾回收器不会管它,但是出现空间内存不足,就要被回收。

    3.弱引用:

    当这个对象被弱引用时,一般还没有出现空间内存不足的情况时,如果垃圾回收器线程扫描到它,就会被回收。

    4.虚引用:

    当这个对象仅仅被虚引用时,该对象可以在任何时候被垃圾回收。

    虚引用主要是用来跟踪对象被垃圾回收的活动。

    虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。

    当一个对象被回收时,如果发现还有一个虚引用,在回收该对象前,就要把这个虚引用加入到与之相关的引用队列中。

    程序通过了解该引用队列,可以判断该对象是否被回收。相当于日志追踪。

  • 相关阅读:
    JVM 参数(转)
    redis 事务
    redis 命令
    Redis配置文件参数说明(转)
    zookeeper原理(转)
    数字证书原理 转载
    证书 签名 验签 实例
    SSL双向认证java实现 (转)
    详细介绍Java垃圾回收机制 转载
    Java Socket重要参数讲解 (转载)
  • 原文地址:https://www.cnblogs.com/gengen1990/p/6568409.html
Copyright © 2011-2022 走看看