java能不能强制释放一个对象,急,请教高手,谢谢~

zjj19860713 2009-12-03 02:38:09
java能不能强制释放一个对象?
当一个对象没有任何引用指向它时,它就是垃圾,就会被java虚拟机自动回收,这个我知道,但是如果这样:

class A{
B bb;
public void A(B bbb){
bb = bbb; //bb也指向这个对象
}
};

class B{
A a;
static B b;
public void xxx(){
a = new A(b);
}
public static void main(Sring a[]){
b = new b(); //b指向这个对象


问题就是如果在class A中让bb=null,那么b这个对象是不是就是垃圾了? 如果不是那怎么让它成为垃圾?我要在class A中释放它。
问题2:上面类B中不是有这句a = new A(b);嘛,执行这句就会跳到类A中,我想在类A中释放a这个对象,就是当前这个类,有没有this.结束此类这样的方法(貌似异想天开),如果没,那么怎么办才可以?

...全文
471 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Busing 2009-12-07
  • 打赏
  • 举报
回复
bb=null;
System.gc();


可以这样么?
shine333 2009-12-06
  • 打赏
  • 举报
回复
说finalize的请回炉再造
finalize类似onclick,是对象被回收(点击)时被回调的方法,而不是通过finalize(onclick)触发回收(点击)
iowntheworld 2009-12-06
  • 打赏
  • 举报
回复
1.你在class A中让bb=null,只影响了A中的bb,不会影响到class B种的b的。因为还有一个静态变量b在指向他。如果你想清理b指向的对象只要让b指向其他对象就OK了。例如:在A用调用B.b = null;

2.参考finalize方法。我没试过哦
frank3G 2009-12-06
  • 打赏
  • 举报
回复
可以强制finalize啊,JVM会收到这个命令,但是什么时候去执行就要有它自己决定了。
估计有空,就帮你处理了。
一头头 2009-12-06
  • 打赏
  • 举报
回复
不能 除非是RTS中才可以

你只能建议JAVA GC 去做处理 而无法命令

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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