java四大引用
来源:互联网 发布:生化危机电影 知乎 编辑:程序博客网 时间:2024/05/29 18:44
java四大引用
什么是java四大引用,它们有什么作用的?
什么是java的四大引用
- 是JDK1.2版本开始引入,把对象的引用分为4个等级,我们平时学习的就是四种的第一级的强引用,说白了,就是Object o = new Object() ,四个引用分别是强引用、软引用、弱引用和虚引用,请记住它们的顺序!因为这是它们对内存的敏感程度!
- 等级: 强 > 软 > 弱 > 虚
它们有什么作用
- 灵活的控制对象的生命周期
- 提高对象的回收机率
理论加代码
. 什么是强引用
- 强引用就是我们平时使用的对象方式,也是使用最多的一种方式,**请记住不管内存紧张也罢,不足也罢,gc永不回收强引用的对象, 即使jvm 出现(内存溢出错误)OutOfMemoryError,使程序停止,也不会回收对象来提高内存**- 代码
public class StrongReferenceDemo { public static void main(String[] args) { Integer data = new Integer(4); String str = "123"; Student student = new Student(); //以上三个对象都是强引用对象,指我们平时使用的对象方式 }}class Student {}
. 什么是软引用
- 对象具备软引用,**请记住,只要内存足够,我们不对对象回收,但是当内存不足,gc对软引用对象进行回收** 可以看出软引用对内存很敏感,可用来高速缓存,同时它可以结合队列使用,如果软引用被gc回收,jvm就会把软引用加入到队列中。- 代码
package reference;import java.lang.ref.SoftReference;public class SoftReferenceDemo { public static void main(String[] args) { String ss = "hello"; //这时"hello"有一个强引用, 还有一个软引用 //泛型指的是软引用指向的类型 //软引用是内存不足时,对象被回收 SoftReference<String> soft = new SoftReference<String>(ss); //获取软引用的对象 String content = soft.get(); System.out.println(content); ss = null; //强引用没有了,这时只有软引用指向"hello" System.gc(); //强制回收 System.gc(); System.gc(); content = soft.get();//看看有没有被回收 System.out.println(content); //有 说明没有被回收,现在内存显然很够 }}
. 什么是弱引用
- gc不内存是发现弱引用,就会立刻回收弱引用对象,但是我们知道gc是一个优先级很低的线程,所以不一定立刻发现并回收弱引用对象,**但记住,只要被gc发现弱引用,不管内存够不够,直接回收**,同时,弱引用,也可以结合队列使用,当被回收,就进去于之关联的队列中- 代码
package reference;import java.lang.ref.Reference;import java.lang.ref.ReferenceQueue;public class WeakReference { public static void main(String[] args) { String ss = "hello"; ReferenceQueue<String> queue = new ReferenceQueue<>(); java.lang.ref.WeakReference<String> weak = new java.lang.ref.WeakReference<String>(ss,queue); System.out.println("现在的引用 " + weak.get()); ss = null; System.gc(); //gc Reference<? extends String> poll = queue.poll(); //如果null,说明被回收了 if(poll != null) { String content = poll.get(); System.out.println(content); } //看看有没有被回收 }}
. 什么是虚引用
虚引用就是和没有任何引用一样,任何时候都可能被回收,**它必须与队列联合使用**
0 0
- JAVA的四大引用
- java四大引用
- java四大引用
- java 的四大引用
- java四大引用
- android面试-java四大引用
- 四大引用
- Java 的四大引用:强引用、软引用、弱引用和虚引用
- JAVA的四大引用,强引用,软引用,弱引用,虚引用
- Java中的四大引用(强引用,弱引用,软引用,虚引用)
- 笔记-java四大引用(强引用,软引用,弱引用,虚引用)
- Java基础_四大引用(强引用、软引用、弱引用、虚引用)
- 简单直白教你理解Java中四大引用强引用,软引用,弱引用,虚引用
- 简单直白教你理解Java中四大引用强引用,软引用,弱引用,虚引用
- java之强、软、弱、虚四大引用
- 知识回顾(一):Java八大基础类型、四大引用类型
- android 四大组件学习(引用)
- android中四大引用的区别,强引用、软引用、弱引用和虚引用
- 关于linux实时抢占补丁
- 【Postgresql源码分析之二】同步复制源码分析
- poj1185炮兵阵地【状压DP】
- QQ推广伪装QQ红包制作教程
- C语言调用python的demo
- java四大引用
- Android中的LayoutInflater
- Unity 可设置路径的对象选择器
- poj 3352 Road Construction(边-双连通分量)
- python实现修改redmne版本号
- POJ 2403
- lintcode merge-k-sorted-lists 合并k个排序链表
- Android自定义控件----WaterFallLayout
- django 静态文件路径设置