62,614
社区成员
发帖
与我相关
我的任务
分享
public class TestFinalize {
public static void main(String[] args) {
TestFinalize2 tf = new TestFinalize2();
tf.change();
new TestFinalize2();
System.gc();
}
}
class TestFinalize2 {
private boolean b = false;
TestFinalize2() {
b = true;
}
void change() {
b = false;
}
protected void finalize() {
if (b)
System.out.println("000");
}
}
public static void main(String[] args) {
TestFinalize2 tf = new TestFinalize2();
tf.change();
new TestFinalize2();
Thread.sleep(500);//让主线程暂停0.5秒,因为Finalizer方法优先级低
System.gc();
}
public static void main(String[] args) {
TestFinalize2 tf = new TestFinalize2();
tf.change();
new TestFinalize2();
System.gc();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.gc();
}
public static void main(String[] args) {
new TestFinalize2();//没有引用链接到此对象
System.gc();//第一次标记,发现对象没有引用,把此对象加入F-Queue中
try {
Thread.sleep(500);//让主线程停止0.5秒,因为Finalizer方法优先级低
} catch (InterruptedException e) {
}
System.gc();//第二次执行标记
}