博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java] 引用类型
阅读量:4955 次
发布时间:2019-06-12

本文共 1101 字,大约阅读时间需要 3 分钟。

1)强引用 :创建一个对象并把这个对象直接赋给一个变量,eg :Person person = new Person("sunny"); 不管系统资源有么的紧张,强引用的对象都绝对不会被回收,即使他以后不会再用到。

 

2)软引用 :通过SoftReference类实现,eg : SoftReference<Person> p = new SoftReference<Person>(new Person("Rain"));,内存非常紧张的时候会被回收,其他时候不会被回收,所以在使用之前要判断是否为null从而判断他是否已经被回收了。

 

3)弱引用 :通过WeakReference类实现,eg : WeakReference<Person> p = new WeakReference<Person>(new Person("Rain"));不管内存是否足够,系统时必定会回收。

关于软引用和弱引用的区别可以使用下面的例子来说明。

 

import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;SoftReference
softp = new SoftReference
(new Student("Rain"));WeakReference
weakp = new WeakReference
(new Student("Rain"));System.gc();if(softp.get()==null){ System.out.println("soft gc");}else{ System.out.println("soft no gc");} if(weakp.get()==null){ System.out.println("weakp gc");}else{ System.out.println("weakp no gc");}

 

output:

soft no gc

weakp gc

可见软引用并没有被回收,弱引用被回收了。

 

 

4)虚引用 :不能单独使用,主要是用于追踪对象被垃圾回收的状态。通过PhantomReference类和引用队列ReferenceQueue类联合使用实现

 

[1]

转载于:https://www.cnblogs.com/deepblueme/p/4802929.html

你可能感兴趣的文章
字符编码笔记:ASCII,Unicode和UTF-8【转载】
查看>>
属性的copy和mutableCopy修饰符(?)
查看>>
Python批量修改图片格式和尺寸
查看>>
转:nginx入门指南,快速搭建静态文件服务器和代理服务器
查看>>
ios开发之-本地推送通知
查看>>
[bootstrap]模态框总结
查看>>
POJ - 2541
查看>>
android openGL ES2 一切从绘制纹理開始
查看>>
P1002 过河卒
查看>>
微信开发者验证
查看>>
成员变量和局部变量的区别:
查看>>
#webpack `Invalid Host/Origin header`问题
查看>>
STM32 HAL库利用DMA实现串口不定长度接收方法
查看>>
采花 flower
查看>>
javascript 闭包的学习
查看>>
C# Socket学习笔记二
查看>>
verilog之四位全加器的编译及仿真(用开源免费的软件——iverilog+GTKWave)
查看>>
BZOJ1491 [NOI2007]社交网络
查看>>
Sqoop自定义多字节列分隔符
查看>>
查询数据表中同一字段下的不同属性值的种类
查看>>