1 / 8
文档名称:

GC幽灵引用等.doc

格式:doc   大小:24KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

GC幽灵引用等.doc

上传人:zhufutaobao 2020/2/3 文件大小:24 KB

下载得到文件列表

GC幽灵引用等.doc

相关文档

文档介绍

文档介绍:理解Java的GC与幽灵引用Java中一共有4种类型的引用:StrongReference、SoftReference、WeakReference以及PhantomReference(传说中的幽灵引用呵呵),这4种类型的引用与GC有着密切的关系,让我们逐一来看它们的定义和使用场景:,它会尽可能长时间的存活于JVM内,当没有任何对象指向它时GC执行后将会被回收***@TestpublicvoidstrongReference(){Objectreferent=newObject();/**通过赋值创建StrongReference*/ObjectstrongReference=referent;assertSame(referent,strongReference);referent=null;();/*StrongReference在GC后不会被回收*/assertNotNull(strongReference);}WeakReference&WeakHashMapWeakReference,顾名思义,是一个弱引用,当所引用的对象在JVM内不再有强引用时,GC后weakreference将会被自动回收***@TestpublicvoidweakReference(){Objectreferent=newObject();WeakReference<Object>weakRerference=newWeakReference<Object>(referent);assertSame(referent,());referent=null;();/**一旦没有指向referent的强引用,weakreference在GC后会被自动回收*/assertNull(());}WeakHashMap使用WeakReference作为key,一旦没有指向key的强引用,WeakHashMap在GC后将自动删除相关的******@TestpublicvoidweakHashMap()throwsInterruptedException{Map<Object,Object>weakHashMap=newWeakHashMap<Object,Object>();Objectkey=newObject();Objectvalue=newObject();(key,value);assertTrue((value));key=null;();/**等待无效entries进入ReferenceQueue以便下一次调用getTable时被清理*/(1000);/**一旦没有指向key的强引用,WeakHashMap在GC后将自动删除相关的entry*/assertFalse((value));}SoftReferenceSoftReference于WeakReference的特性基本一致,最大的区别在于SoftReference会尽可能长的保留引用直到JVM内存