JAVA Reference-深入

来源:互联网 发布:知乎 神回复 编辑:程序博客网 时间:2024/06/05 09:16



JAVA Refence主要职责是

  • 内部维护着4个状态

Refence有4个子类,分别代表最终引用,软引用,弱引用,虚引用


其中内部线程类ReferenceHandler主要职责是将pending列表中的引用放入ReferenceQueue中(如果构造reference的时候有传入),线程以最高优先级运行。
在这里如果是虚引用的话,会在这个地方调用清除操作
if (r instanceof Cleaner) {          ((Cleaner)r).clean();           continue;}

ReferenceQueue主要职责是维护已经被回收的引用队列,可以用来判断对象是什么时候被回收的,可以在某些场景用到(如敏感数据缓存)

参考资料:
http://blog.csdn.net/u012332679/article/details/57489179
https://www.iflym.com/index.php/code/201609180001.html
http://www.cnblogs.com/redcreen/archive/2011/02/15/1955267.html