文档章节

JAVA引用类型

rainmanqqst
 rainmanqqst
发布于 2017/02/28 19:11
字数 357
阅读 13
收藏 0

强引用

强引用是最普遍的引用,java垃圾回收机制不会回收强引用的对象。它的实现方式如下:

Object object = new Object();

只有当object这个对象使用完毕,失去引用后才可能会被回收。但是如果object是一个全局变量,那么只能通过object=null;强制使该对象失去引用,否则除非程序结束,该对象不会被回收。

软引用

 当使用软引用时,除非出现内存不足,否则不会触发回收机制。它的实现方式如下:

Object object = new Object();
SoftReference<Object> soft = new SoftReference<Object>(object);

弱引用

 当使用弱引用时,每次内存回收线程运行时,该对象都会被回收。它的实现方式如下:

Object object = new Object();
WeakReference<Object> weakReference = new WeakReference<Object>(object);   

虚引用

当使用虚引用时,在任何时刻该引用都有可能会被回收,相当于未被引用。虚引用主要用于跟踪对象被垃圾回收的活动。 当回收线程运行准备回收虚引用的对象时,会将该对象放入对应的引用队列中。通过监控这个引用队列,可以在对象被回收前进行一些处理。虚引用必须与ReferenceQueue一起使用。它的实现方式如下:

ReferenceQueue<Object> queue = new ReferenceQueue<>();
Object object = new Object();
PhantomReference<Object> phantomReference = new PhantomReference<>(object,queue);

 

本文转载自:http://blog.csdn.net/mazhimazh/article/details/19752475

共有 人打赏支持
上一篇: HTTP状态码
下一篇: Synchronized的用法
rainmanqqst
粉丝 7
博文 59
码字总数 32306
作品 0
浦东
程序员
私信 提问

暂无文章

开发者和架构师之间最大的区别是什么?

1、开发者和架构师之间最大的区别是什么? 架构师和开发者一样,也经常写代码,简单的说,开发者和架构师之间最大的区别就是技术领导力。 软件架构师的角色需要理解最重要的架构驱动力是什么...

James-
8分钟前
0
0
java框架学习日志-4

补充一些spring配置文件的方法。 设置别名: <!--通过name直接设置别名--> <bean name="user2" class="cn.sxt.factory.UserDynamicFactory"> </bean> <!--有id的情况下也可以设置......

白话
11分钟前
0
0
20181213 上课截图

小丑鱼00
27分钟前
1
0
nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages For reference, I am attaching my location block for catching files with the .php extension: location ~......

Yao--靠自己
34分钟前
2
0
mac 没声音

somehow不时就会出现这种情况。之前都得重启。 其实可以直接在terminal里打以下命令: sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extension...

dubox
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部