我自己的理解:

 

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

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

分情况考虑:

1.强引用:

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

2.软引用:

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

3.弱引用:

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

4.虚引用:

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

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

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

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

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

 

相关文章:

  • 2021-06-27
  • 2022-12-23
  • 2021-09-11
  • 2021-05-21
  • 2021-10-03
  • 2021-04-27
猜你喜欢
  • 2022-02-20
  • 2022-12-23
  • 2021-08-09
  • 2022-01-09
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案