码上敲享录 > java入门知识分享 > java对象的4种引用方式详解

java对象的4种引用方式详解

上一章章节目录下一章 2019-08-28已有1329人阅读 评论(0)

java对象的4种引用方式详解


解决方法:

1.强引用

例如Object obj = new Object();obj就是强引用,在jvm垃圾回收时通过根搜索算法找不到这个对象时就回收,否则直到当JVM的内存空间不足时,异常导致程序异常终止也不回收强引用的对象。


2.软引用

软引用是通过SoftReference类实现的,生命周期比强引用短。当JVM认为内存空间不足时,就回去试图回收软引用指向的对象,会去清理软引用对象。软引用可以与引用队列(ReferenceQueue)联合使用。

例如:

softReference就是软引用

Object obj = new Object();

SoftReference softReference = new SoftReference(obj);


3.弱引用

它的生命周期比软引用还要短,通过WeakReference类实现的,在GC的时候,不管内存空间足不足都会回收这个对象,同样也可以配合ReferenceQueue 使用,ThreadLocal中的key就用到了弱引用。

例如:weakReference就是弱引用对象

Object obj = new Object();

WeakReference<Object> weakReference = new WeakReference<Object>(obj);


4.虚引用,是通过PhantomReference类实现的。GC回收时都会被回收,是必须配合ReferenceQueue 使用的,虚引用的作用是对象被GC回收后执行这个对象重写的finalize()方法,处理自定义的业务代码而已。

例如:phantomReference就是虚引用

Object obj = new Object();

ReferenceQueue queue = new ReferenceQueue();

PhantomReference<Object> phantomReference = new PhantomReference<Object>(obj , queue);




1

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交