在Java语言中,除基本数据类型外,其余的是对各种对象的对象的引用。在Java中,引用根据其生命周期的持续时间分为四类。
在一个强大的引用函数中常见的常见异议编码:Objectobj = newObject()是一个可靠的引用。
与关键字new创建的对象关联的引用是实体引用。
当存储器中的JVM不足,JVM发出一个内存溢出的运行时错误(OOM),程序异常终止。内存不足
在一个正常的对象时,如果不存在对其它没有参照关系,或超出参考范围,并且明确地或分配给空相应的参考(强),存在垃圾收集的可能性。具体的恢复时间取决于垃圾收集。
两个软件参考功能:软件参考由SoftReference类实现。
软参考生命周期比强参考更短。
JVM是,只有当确定没有足够的内存,试图获取指向的对象软引用。在JVM中,OutOfMemoryError异常之前生成,然后安全地擦除指向的对象软引用。
软引用可以与引用队列(ReferenceQueue)一起使用。如果垃圾收集器正在请求由软引用引用的对象,Java虚拟机将添加软引用到与它相关的引用队列。
然后,调用poll()方法的ReferenceQueue上,有一个问题,你可以检查它是否被回收的对象。
如果队列为空,则返回null。否则,该方法返回队列中的上一个引用对象。
应用场景:软件引用通常用于实现缓存。
如果您仍有空闲内存,则可以暂时保留缓存并在内存不足时将其清除。这可确保您可以使用缓存而不会耗尽内存。
3弱引用弱引用由WeakReference类实现。
弱参考的生命周期短于弱参考。
在搜索其中垃圾收集线程管理,当遇到具有弱引用的对象,而不管当前的存储空间是否足够,则存储器将被重新使用的存储器区域的过程。
由于垃圾收集器是一个低优先级的子进程,因此并不总是可以重用具有弱引用的对象。
弱引用可以与引用队列(ReferenceQueue)一起使用。如果弱引用引用的对象被收集为垃圾,则Java虚拟机会向与其关联的引用队列添加弱引用。
应用场景:弱应用程序也可用于缓存。
4虚拟参考功能:虚拟参考也称为PhantomReference类的幻像参考。
您无法通过虚拟引用访问对象属性或函数。
幻像引用仅提供一种机制,用于确保在对象完成后完成某些操作。
如果对象仅包含虚拟引用,则垃圾收集器可以随时回收它,就像没有引用一样。
虚拟引用必须与引用队列(ReferenceQueue)一起使用。
当垃圾收集器正准备恢复对象,它仍然是,它已经发现,有一个虚拟的参考,请求该对象的存储器之前,并将其添加到与它的虚拟参考相关联的参考队列的情况。
ReferenceQueuequeue = newReferenceQueue(); PhantomReferencepr = newPhantomReference(对象,队列);程序,通过确定虚拟基准是否已被添加到所述参考队列,可以判断被引用的对象是否被收集。
如果程序检测到已将虚拟引用添加到引用队列,则可以在引用对象的内存被回收之前执行某些程序操作。
应用场景:可用于跟踪垃圾收集器声明的对象的活动。当垃圾收集器回收虚拟引用对象时,会收到系统通知。