WeakReference和Scala REPL
发布时间:2020-12-16 18:10:33 所属栏目:安全 来源:网络整理
导读:我想玩 scala.ref.WeakReference.但是,在尝试实现大事之前,我想尝试检查scala控制台中的行为.我尝试了一些但我无法获得被取消引用的对象.这是我的尝试之一: class Adefined class A class B(var value: A)defined class B new B(new A)res0: B = B@c8aeb3 n
我想玩
scala.ref.WeakReference.但是,在尝试实现大事之前,我想尝试检查scala控制台中的行为.我尝试了一些但我无法获得被取消引用的对象.这是我的尝试之一:
> class A defined class A > class B(var value: A) defined class B > new B(new A) res0: B = B@c8aeb3 > new scala.ref.WeakReference(res0.value) res1: scala.ref.WeakReference[A] = scala.ref.WeakReferenceWithWrapper@16a5d72 > res0.value = new A > res1.get // Here I hope to get None res3: Option[A] = Some(A@135707c) 另一个尝试是由下面的oxbow_lakes给出的. 我也试图显式运行垃圾收集器(调用java.lang.System.gc)是徒劳的. 有没有办法取消引用res1的内容? 解决方法Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM,Java 1.6.0_22). Type in expressions to have them evaluated. Type :help for more information. scala> class A defined class A scala> class B(var value: A) defined class B scala> new B(new A) res0: B = B@4223d9b scala> new scala.ref.WeakReference(res0.value) res1: scala.ref.WeakReference[A] = scala.ref.WeakReferenceWithWrapper@20eb607d scala> res0.value = new A scala> System gc scala> res1 get res3: Option[A] = None 顺便说一句,如果我在没有显式System gc的情况下将其作为脚本运行,它也不会删除引用.所以对我而言,这不是REPL的问题,而只是弱引用和垃圾收集器的工作方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |