Java 引用类型

Java中提供了4个级别的引用:强应用、软引用、弱引用和虚引用

强应用

直接持有对象的实例

特点:

    1. 强引用可以直接访问目标对象;
    1. 强引用指向的对象在任何时候都不会被系统回收。JVM宁愿抛出OOM异常也不回收强引用所指向的对象; 可能导致内存泄露。

软引用(Soft Reference)

用来描述一些还有用但并非必须的对象。对于软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。

可用场景:

创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建的对象。PS:图片编辑器,视频编辑器之类的软件可以使用这种思路。

https://www.cnblogs.com/mjorcen/p/3968018.html

弱引用(Weak Reference)

用来描述非必须的对象,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集之前。

弱引用就是只要JVM垃圾回收器发现了它,就会将之回收。

当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。一旦一个弱引用对象被垃圾回收器回收,便会加入到一个注册引用队列中。

软引用、弱引用都非常适合来保存缓存数据。如果这么做,当系统内存不足时,这些缓存数据会被回收,不会导致内存溢出。

而当内存资源充足时,这些缓存数据又可以存在相当长的时间,从而起加速系统的作用。

可用场景:

不想手动将对象从集合中剔除,让gc自动帮我们回收。 http://www.importnew.com/21206.html

原文 

http://rustfisher.github.io/2018/06/09/Java_note/Java_reference_note/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java 引用类型

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址