JAVA的四种引用
来源:互联网 发布:mac截屏软件免费下载 编辑:程序博客网 时间:2024/05/22 05:09
1.强引用
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。
2.软引用
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有时候会返回null
这时候sf是对obj的一个软引用,通过sf.get()方法可以取到这个对象,当然,当这个对象被标记为需要回收的对象时,则返回null;
软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。
3.弱引用
第二次垃圾回收时回收,可以通过如下代码实现
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有时候会返回null
wf.isEnQueued();//返回是否被垃圾回收器标记为即将回收的垃圾
弱引用是在第二次垃圾回收时回收,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null。
弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。
4.虚引用
垃圾回收时回收,无法通过引用取到对象值,可以通过如下代码实现
Object obj = new Object();
PhantomReference<Object> pf = new PhantomReference<Object>(obj);
obj=null;
pf.get();//永远返回null
pf.isEnQueued();//返回是否从内存中已经删除
虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
虚引用主要用于检测对象是否已经从内存中删除。1.强引用
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。
- Java的四种引用
- Java的四种引用
- Java的四种引用
- java的四种引用
- JAVA的四种引用
- Java的四种引用
- java的四种引用
- java的四种引用
- java的四种引用
- Java的四种引用
- java的四种引用
- java的四种引用
- java的四种引用
- java的四种引用
- Java的四种引用
- JAVA的四种引用
- Java的四种引用
- java的四种引用
- JAVA集合之---LinkedList、ArrayList与Vector
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- 一天写多少行代码才算是好程序员?
- vue2.0使用weui.js的uploader组件上传图片
- 记录问题-vs 2013编程
- JAVA的四种引用
- C_day06 c访问java属性和方法
- HTML字符转义与反转义
- 【帝国CMS】如何用灵动标签调用副表字段内容?
- Spring Boot中使用Redis数据库
- 网络编程的一些问题
- Android Studio项目将Module依赖(lib)转成jar包
- linux添加删除swap分区文件
- IDEA之Session的活化和钝化