首页 > 编程语言 > 详细

java中的引用类型

时间:2020-05-09 17:26:36      阅读:44      评论:0      收藏:0      [点我收藏+]

强引用

内存溢出也不会清除对象。

软引用

SoftReference<byte[]> m = new SoftReference<>(new byte[1024]);
软引用适合缓存使用,堆空间不足就会清除掉软引用。

弱引用

WeakReference m = new WeakReference<>(new M());
只要有垃圾回收 就会回收对象。

虚引用

PhantomRerence
get不到。
管理直接内存,DirectByte

ThreadLocal

  • set方法
    首先 获取当前线程t,然后getMap(t)得到一个TreadLocalMap(当前t的成员变量),接着把tl的实力对象作为k,传进set方法的的值作为value,调用TreadLocalMap.set(this,value)的方法。TreadLocalMap.set()中,new Entry() extends WeakReference<>;
    因为 Tread线程中有tl指向TreadLocal,TreadLocalMap中entry的key也指向TreadLocal。所以如果TreadLocalMap中的entry不设置为弱引用,即使tl置空,gc也不会收集TreadLocal。导致内存溢出

java中的引用类型

原文:https://www.cnblogs.com/hhachi/p/12857345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!