Java 控制类的引用类型,合理使用内存
2019-01-10 07:48:52来源:博客园 阅读 ()
Java提供了 java.lang.ref包,该包下的类均与垃圾回收机制相关
先介绍Java对象的集中引用类型
1.强引用
强引用是最常见的,创建对象就是强引用,如 String a = new String("1");
无论系统内存是否紧张,只要该对象还存在强引用就不会被垃圾回收机制回收
2.软引用
当系统内存足够时,不会被回收,当系统内存不足时,会将其回收
3.弱引用
当垃圾回收机制运行时,总会将其回收
4.虚引用
跟踪对象被垃圾回收的状态
通过检查与虚引用关联的引用队列中是否已经包含指定的虚引用,从而了解虚引用所引用的对象是否即将被回收
再介绍引用相关的类
- SoftReference<T>: 软引用类型,示例如下,
// 创建软引用类型
SoftReference<String> sr = new SoftReference<String>(new String("Hello"));
// 返回对象引用
String string = sr.get();
if(string == null){
// 因为软引用当系统内存紧张时会被回收,所以使用的时候需要判断是否为null
}
// 创建数组
SoftReference<String>[] srs = new SoftReference[100];
2.WeakReference<T>: 弱引用类型,示例如下
// 创建弱引用类型, 不能使用"Hello",这样系统会缓存这个字符串直接量,使用强引用来引用它
WeakReference<String> wr = new WeakReference<>( new String("Hello"));
// 调用弱引用
String str = wr.get();
// 因为软引用当运行垃圾回收时会被回收,所以使用的时候需要判断是否为null
if(str == null){}
// 强制垃圾回收
System.gc();
// 再次调用弱应用,发现已经为null
System.out.println(wr.get());
3.WeakHashMap<K,V>: 弱引用类型的Map,这个类是 java.util 包下的
当垃圾回收机制运行时,会清空所有key-value对,除非某些key还有强引用在引用它
4.PhantomReference<T>: 虚引用类型,类似于没有引用,要和引用队列联合使用
感觉不怎么用的到,就不举例子了,感兴趣自己查一下
5.ReferenceQueue<T>: 引用队列,用于保存被回收后对象的引用
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java post请求的表单提交和json提交简单小结
下一篇:Java 注解原理
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash