Java中的强引用,软引用,弱引用,虚引用有什么用
【摘要】 ### 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);
```
强引用>软引用>弱引用>虚引用

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