Java中的强引用,软引用,弱引用,虚引用有什么用

举报
孙中明 发表于 2022/02/17 09:51:22 2022/02/17
【摘要】 ### Java中的强引用,软引用,弱引用,虚引用有什么用强引用( Strong Reference )>最普遍的引用:Object obj=new Object()>抛出OutOfMemoryError终止程序也不会回收具有强引用的对象>通过将对象设置为null来弱化引用,使其被回收软引用( Soft Reference )>对象处在有用但非必须的状态>只有当内存空间不足时,GC会回收该引...


### 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)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。