Java中的强引用,软引用,弱引用,虚引用有什么用
### Java中的强引用,软引用,弱引用,虚引用有什么用
强引用( Strong Reference )
>最普遍的引用:Object obj=new Object()
>抛出OutOfMemoryError终止程序也不会回收具有强引用的对象
>通过将对象设置为null来弱化引用,使其被回收
软引用( Soft Reference )
>对象处在有用但非必须的状态
>只有当内存空间不足时,GC会回收该引用的对象的内存
>可以用来实现高速缓存
```java
String str=new String( original: "abc"); //强引用
SoftReference<String> softRef=new SoftReference<String>(str);//软引用
```
弱引用( Weak Reference )
> 非必须的对象,比软引用更弱一些
> GC时会被回
>被回收的概率也不大,因为GC线程优先级比较低
>适用于引用偶尔被使用且不影响垃圾收集的对象
```java
string str=new String( original: "abc"y ;
weakReference<String> abcweakRef = new weakReference<String>(str);
```
虚引用( PhantomReference )
>不会决定对象的生命周期
>任何时候都可能被垃圾收集器回收
>跟踪对象被垃圾收集器回收的活动,起哨兵作用必须和引用队
>ReferenceQueue联合使用
```java
String str=new String( original: "abc");
ReferenceQueue queue = new ReferenceQueue( ) ;
PhantomReference ref = new PhantomReference(str, queue);
```
强引用>软引用>弱引用>虚引用
![](https://img-blog.csdnimg.cn/8899bf88a4654dafb55e9152589396c2.png)
- 点赞
- 收藏
- 关注作者
评论(0)