java 强引用,软引用,弱引用,虚引用具体使用

来源:互联网 发布:淘宝批发 编辑:程序博客网 时间:2024/06/01 23:15

1 强引用

什么是强引用,说句废话平常我们用到的对象基本上都是强引用

比如 Object o=new Object(); 这个就属于强引用

强引用表示 就算jvm 抛出内存溢出的异常 gc也不会回收它

2 软引用

如果一个对象具有软引用,当内存空间不足,GC会回收这些对象的内存,可以想象当发生内存溢出时一定没有软引用了。

我们一般用软引用构建敏感数据缓存

软引用的使用和SoftReference<T>一起使用如下

Object o=new Object() ;//强引用 不可怀疑

SoftReference<Object> softReference=new SoftReference<Object>(o);

o=null; //这句不可省略,不然softreference 就不起作用了

取数据 Object o2=softReference.get();//使用之前最好先判断是否为空,这里就不判断了

3 弱引用

如果一个对象具有弱引用,在GC线程扫描内存区域的过程中,不管当前内存空间足够与否,都会回收内存,具体什么时间回收这个就看gc 了,不是我们人类可以操控的

我们一般用弱引用构建不敏感数的缓存

弱引用和WeakReference<T> 一起使用 如下

Object o=new Object();//强引用 不可怀疑

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

取数据时 weakReference.get();//不管o是否是强引用,只要gc 就会回收弱引用

4虚引用

只要gc想回收任何时候都可回收。。。最没地位的一个

使用如下 需要借助ReferenceQueue如下

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




阅读全文
0 0
原创粉丝点击