关于gc的一个问题(50分)

  • 主题发起人 主题发起人 fq603fq
  • 开始时间 开始时间
F

fq603fq

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用了SoftReference或者weakreference后,如果想通过程序方法验证SoftReference或者WeakReference的队列内的对象是否都被清空,请问该如何去做呢?
我看到有程序使用这样的方法:SoftReference sr=new SoftReference(Object o)
//code
然后用sr!=null判断认为sr的队列不为空,可是我测试这个方法不能通过,宁外我在文档里看到有isEnQueue方法,可是这个方法的返回值我也一直弄不清楚,请接触gc多的朋友解答一下好吗?
谢谢
 
郁闷了~问了3,4个地方了~没有一个地方有明确得回复~寄希望最大的富翁论坛居然没有回复。。。。。。。。。
 
我在Thinking In Java一书中看到这样的内容:
System.gc();可以强迫编译器运行garbage collector, 但是,具体将对象置为null却要gc()自己决定。
另外,有一个强迫性的将对象清为null的方法,就是调用System.runFinalization(),不过在那之前必须确定已经没有实例指向该对象,不然,很有可能会造成deadlock(死锁),特别是在用Theard子类时尤其可怕。
下面这是System.runFinalization()在APIdo
cumentation中的说明:
Runs the finalization methods of any objects pending finalization.
Calling this method suggests that the Java Virtual Machine expend effort toward running the finalize methods of objects that have been found to be discarded but whose finalize methods have not yet been run. When control returns from the method call, the Java Virtual Machine has made a best effort to complete all outstanding finalizations.
 
谢谢,对于system.runFinalization()我倒是接触过,不过没有注意“具体将对象置为null却要gc()自己决定。”,先前我大概查阅过TIJ2的内容,没有发现类似说明,我再去看看。
还有,请教一下,isEnQueue方法的返回值的确切意义是什么呢?我查看doc后,看得很迷惑
 
Queue,具体是队列,我们学过数据结构,而Java本身并不提供Queue的Class,而EnQueue就是入列,相反DeQueue就是出列。(队列嘛,先入先出),而isEnQueue()返回是逻辑型的值吧。虽然我不明白你具体指的是哪一个子类。你能说得更明白一点吗?
 
算了~不了解的地方我再自己研究吧
 
后退
顶部