我自己的理解:
其实 ,这个就是针对java的对象,每个对象都在堆上都占有自己的内存空间
然后,关键是垃圾回收机制什么时候回收这个对象。(为什么要被回收,是因为每个应用程序的内存有限)
分情况考虑:
1.强引用:
当这个对象被强引用时,就算出现空间内存不足,也要出现oom的情况
2.软引用:
当这个对象被软引用时,一般垃圾回收器不会管它,但是出现空间内存不足,就要被回收。
3.弱引用:
当这个对象被弱引用时,一般还没有出现空间内存不足的情况时,如果垃圾回收器线程扫描到它,就会被回收。
4.虚引用:
当这个对象仅仅被虚引用时,该对象可以在任何时候被垃圾回收。
虚引用主要是用来跟踪对象被垃圾回收的活动。
虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。
当一个对象被回收时,如果发现还有一个虚引用,在回收该对象前,就要把这个虚引用加入到与之相关的引用队列中。
程序通过了解该引用队列,可以判断该对象是否被回收。相当于日志追踪。