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控制台显示的结果为什么会这样呢?非常感谢!!
解决方案 »
- 关于一道1到N自然数排序的华为面试题的疑问
- 新手求教 关于packet方法的一点小问题
- 机试题 数组中重复次数最多的元素
- 在线等待急,请问我安装的数据库是SqlServer express版,Java程序中连接数据应用什么驱动程序啊?
- 关于数据库连接的问题
- 实现递归 比方数组里面 1,2 结果显示就是1,2,12,21好像很简单 就是有点烦
- 怎么实现map的放入和取出的key的顺序完全相同?
- 关于jdbTable
- 随便给个100行左右的java小程序,就给分,作业,急!
- 在不同的jar里,class访问class的问题,解决立即给分
- 请教java版的《数据结构》的书,最好能有详细的平衡二叉排序树和十字链表的内容,大家有知道的吗?谢谢
- 捕获异常的时候 括号里面的e是什么意思啊 ?
这也有不足为怪为什么其执行顺序不一样了。
谢谢。