版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! https://blog.csdn.net/Fly_as_tadpole/article/details/87732934
在JVM的GC中,我们使用引用计数器算法和可达性分析算法来确定一个对象是否gg了!
这里都提到了引用!什么是引用?
其实引用就是一个内存地址,它保存着另一个对象在内存中的起始地址!
由于引用只有 被引用、没有被引用 两种状态!
那么有一类现象:
内存空间足够的时候,我们希望引用的对象能够保存,内存紧张的时候,可以抛弃这些对象!
这个怎么搞????(软引用)
因此扩充引用概念!将引用分为:
强引用、软引用、弱引用、虚引用
强引用
类似于 Pojo a = new Pojo(); 只要强引用还存在就不会被回收!
软引用
被软引用关联的对象,在内存足够时候,可以保留,内存不够的时候,就进行回收。
弱引用
被弱引用关联的对象,只能够生存到下一次GC发生之前。
虚引用
一个对象是否有虚引用的存在不会影响其生存时间。也无法通过一个虚引用来获取一个对象!!!但是设置虚引用可以使得对象被回收的时候会收到一个系统通知(类似于一个信号作用)