首页 > 编程知识 正文

Java 引用,java三种队列详解

时间:2023-05-04 09:00:13 阅读:24519 作者:4897

java四大引用是什么?

从JDK 1.2版引入,对象引用分为四个阶段。 我们平时学习的是四种第一级的学习参考。 说白了,Objecto=newObject (),四个引用分别是强引用、软引用、弱引用和虚引用。 请记住那些顺序。 这是因为对内存很敏感! 等级:强弱虚

有什么作用?

灵活控制的生命周期

提高对象回收概率

理论加号分析:

1 .什么是强引用

强烈的引用是我们平时使用的对象方式,也是使用最多的方式。 请记住,无论内存紧张还是内存不足,gc都不会回收引用较强的对象。 jvm发生“内存溢出”错误,停止程序不会回收对象以提高内存。

代码

1 .什么是软引用

对象具有软引用。 请注意,如果内存足够,就不会回收对象。 但是,如果内存不足,gc会回收软引用对象,从而表明软引用对内存敏感,可用于缓存。 此外,它可以与队列配合使用。 在gc中回收软引用后,jvm会将软引用添加到队列中。

代码

3 .什么是弱引用?

gc没有内存在发现较弱的引用时,会立即回收较弱的引用,但由于知道gc是低优先级线程,因此不一定立即发现并回收较弱的引用,但只知道gc发现较弱的引用

那么,即使内存不够,也直接回收。 此外,弱引用也可以与队列配合使用。 被回收后,进入与其相关的队列

代码

4 .什么是虚引用?

虚引用与上述软引用、弱引用不同,不影响对象的生命周期。 在java中,它用java.lang.ref.PhantomReference类表示。 如果对象与虚拟引用相关联,垃圾收集器可能会随时回收该对象,就像没有关联引用一样。

应注意的是,虚拟引用必须与引用队列关联使用,如果垃圾收集器尝试回收对象时发现还有虚拟引用,则会将该虚拟引用添加到关联的引用队列中。 程序可以通过确定参考队列中是否已经存在伪参考,来知道被参考的对象是否被垃圾回收。 如果程序发现虚拟引用已添加到引用队列中,则程序可以在回收被引用对象的内存之前执行必要的操作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。