java中什么叫引用类型,java引用的类型

  java中什么叫引用类型,java引用的类型

  如何解决写爬虫IP受阻的问题?立即使用。

  Java的引用类型

  Java一般有两种类型,即基本数据类型和引用数据类型。其中引用数据类型是指存储堆中要引用的对象,引用是Java面向对象的一个特性。

  从JDK1.2开始,Java中有四种类型的引用,即:

  strong参考

  软参考(软参考)

  薄弱环节

  幻象参照

  强引用-StrongReference

  这种引用是正常开发中最常用的,比如string strong=new string(强引用)。当一个实例对象有一个强引用时,垃圾收集器不会回收该对象。当内存不足时,它宁愿抛出OutOfMemeryError异常也不回收被强引用的对象,因为JVM认为被强引用的对象就是用户正在使用的对象,它分不清回收哪个。强制回收可能会导致严重的系统错误。

  软引用-SoftReference

  如果一个对象只有软引用,JVM只会在内存不足时回收该对象,在其他情况下不会回收。软引用可以与ReferenceQueue结合使用。当软引用的对象由于系统内存不足而被回收时,JVM会将这个软引用添加到其关联的ReferenceQueue中。

  ReferenceQueuereferenceQueue=newReferenceQueue();

  SoftReferenceBooksoftReference=newSoftReference(new book(),reference queue);

  book book=soft reference . get();

  reference reference=reference queue . poll();当系统内存不足时,触发gc,书会被回收,引用不会为空。

  弱引用-WeakReference

  当JVM触发gc时,只有弱引用的对象才会被回收。与软引用不同,无论内存是否不足,弱引用都将被回收。弱引用可以与ReferenceQueue结合使用。当软引用的对象由于系统触发gc而被回收时,JVM会将这个弱引用添加到其关联的ReferenceQueue中。但是,由于垃圾收集器线程的低优先级,弱引用可能无法快速回收。通过一个主动触发gc的例子验证了这一结论。

  ReferenceQueuereferenceQueue=newReferenceQueue();

  WeakReferenceBookweakReference=newWeakReference(new book(),reference queue);

  book book=soft reference . get();

  system . GC();

  //Runtime.getRuntime()。GC();

  reference reference=reference queue . poll();当然,这是不能每次都重复的,因为我们调用System.gc()只是告诉JVM回收垃圾的时间到了,但还不能确定什么时候能完成。但就我的测试来看,只要多写几次System.gc(),复发的概率还是很大的。

  虚引用-PhantomReference

  如果一个对象只引用一个虚拟引用,垃圾收集器可以随时回收它。虚拟引用主要用于跟踪被垃圾收集器回收的对象的活动。当它被回收时,JVM会将这个弱引用添加到其关联的ReferenceQueue中。

  与软引用和弱引用不同,虚拟引用必须有一个ReferenceQueue与之关联,通过phantomReference.get()得到的值为null。试想,如果没有与之相关联的ReferenceQueue,存在的价值是什么?

  PhantomReferenceBookphantomReference=newPhantomReference(new book(),reference queue);

  book book=phantom reference . get();//该值为空

  reference reference=reference queue . poll();推荐教程:以上《java教程》是Java引用类型。包括哪些内容?更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: