合肥Java培训
达内合肥java培训中心

0551-64632511

热门课程

java开发过程中的强引用,软引用,弱引用和虚引用

  • 时间:2019-02-11 10:45
  • 发布:SegmentFault
  • 来源:SegmentFault博客

java开发过程中的强引用,软引用,弱引用和虚引用

Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展。

强引用

如果一个对象具有强引用,垃圾回收器绝不会回收它.当内存空间不足时,java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题.

软引用SoftReference

如果内存空间充足,垃圾回收器就不会回收它;如果内存空间不足,就会回收这些对象的内存.只要垃圾回收器没有回收它,该对象就可以继续被应用程序使用.软引用可以实现内存敏感的高速缓存.

弱引用Weakreference

只具有弱引用的对象具有更短的生命周期.在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存.不过,垃圾回收器是一个优先级很低对的线程,因此不一定会很快发现那些只具有弱引用的对象.

虚引用PhantomReference

虚引用并不会决定对象的生命周期.如果一个对象仅持有虚引用,那么他就和没有任何引用一样,在任何时候都可能被回收.

引用队列ReferenceQueue

引用队列可以和软引用,弱引用和虚引用联合使用.并且虚引用必须和引用队列联合使用.如果软引用(弱引用或者虚引用)所引用的对象被垃圾回收,java虚拟机就会把这个引用加入到与之关联的引用队列中.

String reference = "hello";

//引用队列

ReferenceQueue queue = new ReferenceQueue<>();

//弱引用

WeakReference softReference = new WeakReference(reference,queue);

reference = null;

//取出弱引用持有的String对象

String str = softReference.get();

//取出引用队列中保存的引用对象

Reference poll = queue.poll();

想要更多了解大数据知识和技巧,选择达内Java大数据课程,达内Java培训17年耕耘IT培训,拥有强大的师资力量,让您全面掌握大数据的分析和编辑方法,成为IT 精英!实现高薪!

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!

预约申请免费试听课程

         

上一篇:零基础转行学Java开发可行吗?
下一篇:Java中创建对象的五种方式

合肥达内Java培训从入门到精通学习路线图

合肥Java培训解答Java工程师为何会大受欢迎?

Java开发者必须掌握的15个开发框架

Java——内存模型是什么

选择城市和中心
贵州省

广西省

海南省