importjava.io.IOException;publicclassGarbageTest{publicstaticvoidmain(String[]args)throwsIOException{try{gcTest();}catch(IOExceptione){e.printStackTrace();}System.out.pri...
import java.io.IOException;
public class GarbageTest {
public static void main(String[] args) throws IOException {
try {
gcTest();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("has exited gcTest!");
System.in.read();
System.in.read();
System.out.println("out begin gc!");
for(int i=0;i<100;i++)
{
System.gc();
System.in.read();
System.in.read();
}
}
private static void gcTest() throws IOException {
System.in.read();
System.in.read();
Person p1 = new Person();
System.in.read();
System.in.read();
Person p2 = new Person();
p1.setMate(p2);
p2.setMate(p1);
System.out.println("before exit gctest!");
System.in.read();
System.in.read();
System.gc();
System.out.println("exit gctest!");
}
private static class Person
{
byte[] data = new byte[20000000];
Person mate = null;
public void setMate(Person other)
{
mate = other;
}
}
}
在这个程序里面
(1)public void setMate(Person other) 这里的setMale()在面前没给出,怎么可以用?
(2)mate = other; 这里的other 是什么?
(3)通过这个程序,怎么理解内存泄露?
展开