62,614
社区成员
发帖
与我相关
我的任务
分享
public class GCTest {
public static void main(String[] args) throws InterruptedException {
new GCTest().test();
}
public void test() {
A a = new A();
B b = new B();
a.test(b);
a = null;
//b = null;
System.gc();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
class A {
byte[] bytes = new byte[10 * 1024 * 1024];
void test(B b) {
Callback c = new Callback() {
@Override
public void callback() {
}
};
b.setCallBack(c);
}
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("A dead");
}
}
class B {
Callback c;
void setCallBack(Callback c) {
this.c = c;
}
}
interface Callback {
void callback();
}
}