class A
{
public void finalize()
{
System.out.println("终结对象A at " + System.nanoTime());
}
public void F()
{
System.out.println("运行A.F()");
Test.objA = this;
}
}class B
{
public A ref;
public void finalize()
{
System.out.println("终结对象B at " + System.nanoTime());
ref.F();
}
}public class Test { public static A objA;
public static B objB;
public static void main(String[] args) {
objA = new A(); //对象A
objB = new B();
objB.ref = objA;
objB = null;
objA = null;
System.gc();
}
}运行结果是:
终结对象B at 32044328474987
运行A.F()
终结对象A at 32044328850733finalize()执行的顺序是不一定的。
我看System.nanoTime()返回的时间,感觉先是执行B.finalize(),请问,执行的顺序是不是:
1、运行B.finalize()方法,显示"终结对象B at 32044328474987",然后执行ref.F()
2、显示"运行A.F()",执行Test.objA = this
3、objA又重新指向对象A如果对象A还有引用指向它的话,请问为什么还会执行A的finalize()方法,并显示"终结对象A at 32044328850733"呢?还是说,B和A的finalize()方法"几乎"同时执行,还没有执行到Test.objA = this;这行代码,A的finalize()就已经执行了?
Eclipse控制台显示的结果为什么会这样呢?非常感谢!!
{
public void finalize()
{
System.out.println("终结对象A at " + System.nanoTime());
}
public void F()
{
System.out.println("运行A.F()");
Test.objA = this;
}
}class B
{
public A ref;
public void finalize()
{
System.out.println("终结对象B at " + System.nanoTime());
ref.F();
}
}public class Test { public static A objA;
public static B objB;
public static void main(String[] args) {
objA = new A(); //对象A
objB = new B();
objB.ref = objA;
objB = null;
objA = null;
System.gc();
}
}运行结果是:
终结对象B at 32044328474987
运行A.F()
终结对象A at 32044328850733finalize()执行的顺序是不一定的。
我看System.nanoTime()返回的时间,感觉先是执行B.finalize(),请问,执行的顺序是不是:
1、运行B.finalize()方法,显示"终结对象B at 32044328474987",然后执行ref.F()
2、显示"运行A.F()",执行Test.objA = this
3、objA又重新指向对象A如果对象A还有引用指向它的话,请问为什么还会执行A的finalize()方法,并显示"终结对象A at 32044328850733"呢?还是说,B和A的finalize()方法"几乎"同时执行,还没有执行到Test.objA = this;这行代码,A的finalize()就已经执行了?
Eclipse控制台显示的结果为什么会这样呢?非常感谢!!
解决方案 »
- 新手问个android方面的问题
- 做个网页游戏工具的进来帮忙
- 大家帮忙看个读文件的程序
- Java包引用问题(有原代码帖上)
- 兄弟帮下忙!感激不尽!JAVA2D绘图中怎么实现画的图象被选中?还有实现图象的移动?
- 关于JDBC连接MySql的问题
- JInternalFrame难道在公用一块内存?? 急切求助ing
- java中数组是怎么作为函数参数进行传递的
- 紧急求救JBuilder7的SerialNumber和CD Key?如果能用奉上100分,言出必行
- 希望大家给小弟推荐一本开发applet的专著,不胜感激
- 请教java版的《数据结构》的书,最好能有详细的平衡二叉排序树和十字链表的内容,大家有知道的吗?谢谢
- 捕获异常的时候 括号里面的e是什么意思啊 ?
这也有不足为怪为什么其执行顺序不一样了。
谢谢。