关于java中gc的一个问题

fq603fq 2003-10-19 02:15:32
在使用了SoftReference或者weakreference后,如果想通过程序方法验证SoftReference或者WeakReference的队列内的对象是否都被清空,请问该如何去做呢?
我看到有程序使用这样的方法:SoftReference sr=new SoftReference(Object o)
//code
然后用sr!=null判断认为sr的队列不为空,可是我测试这个方法不能通过,宁外我在文档里看到有isEnQueue方法,可是这个方法的返回值我也一直弄不清楚,请接触gc多的朋友解答一下好吗?
谢谢
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fq603fq 2003-10-19
  • 打赏
  • 举报
回复
多谢楼上的,可是如果要在程序中就得判断改怎么办呢?
buick555 2003-10-19
  • 打赏
  • 举报
回复
用 java -Xloggc:<file> 你的类
来将GC的日志记到文件中查看.
fq603fq 2003-10-19
  • 打赏
  • 举报
回复
谢谢你的回复,
我用的是类似的方法
可是我在细节华测试sr==null的值的时候,发现并没有用,也就是说sr!=null的某些时候,sr.get()返回居然为null,让我百思不得其解
而isEnQueue的返回值我一直没有具体搞清楚它是什么东西了
charbee 2003-10-19
  • 打赏
  • 举报
回复
我走过几个demo,
应该就是你的软引用为空之后,就会给GC清除出去的了。

SoftReference sr=new SoftReference(Object o);
//我觉得如果你用到了一个软引用对象的话,
//为了保证你的程序没有问题,
//你就应该随时重新实例化你的对象
if(sr == null)
{
//重新实例化你的对象
 sr = new SoftReference(new YourObject());
}
//下面再继续你的代码。
。。。。。。


//做的好处应该是一些不变的占用内存很大的对象,
//可以随时让JVM自动清除一些内存出来,可以回快其它的程序的速度
//以及防止程序出现outofMemory.
//在要用时候,如果给GC了,可以随时可以再load出来。



67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧