class A
{ private String name="du";
public A(String name)
{
this.name=name;
System.out.println(name); }
public void finalize()
{System.out.println("object is going!");
}
}
class B
{
public static void main(String[] args)
{A a1=new A("p");
A a2=new A("k");
A a3=new A("d");
A a4=new A("q");
System.gc();
}
}
运行结果是
p k d q
finalize被调用了么?结果为什么不是下面的情况?
p k d q
object is going!
object is going!
object is going!
object is going!
{ private String name="du";
public A(String name)
{
this.name=name;
System.out.println(name); }
public void finalize()
{System.out.println("object is going!");
}
}
class B
{
public static void main(String[] args)
{A a1=new A("p");
A a2=new A("k");
A a3=new A("d");
A a4=new A("q");
System.gc();
}
}
运行结果是
p k d q
finalize被调用了么?结果为什么不是下面的情况?
p k d q
object is going!
object is going!
object is going!
object is going!
A a2 = new A("k");
A a3 = new A("d");
A a4 = new A("q");
a1 = null;
a2 = null;
a3 = null;
a4 = null;
System.gc();
因为还存在引用,对象不会释放的,这样可以
申请垃圾回收机制运行,你可以申请,但是它不保证被执行,况且你的上面还没有产生垃圾对象,你所有的对象都有引用指向的,所以均没有调用那个方法
package com.test;class A
{ private String name="du";
public A(String name)
{
this.name=name;
System.out.println(name); }
public void finalize()
{
System.out.println("object is going!");
}
}
class Test
{
public static void main(String[] args)
{
new A("p");
new A("k");
new A("d");
new A("q");
System.gc();
}
} 这样就可以被调用了。
Java。jsp吗?
我的多学啦!
原因为每个对象都没有调用相应的方法啊
申请回收垃圾,但并不能保证立即回收
什么时候回收是JVM决定的