public class Finalizer {
public static void main(String[] args) {
new Person();
new Person();
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}class Person{
public void finalize(){
System.out.println("gon");
}
}你们可能说加 System.gc(); 但是JVM规范是程序彻底退出,会执行对象的垃圾清理工作的。要不然内存岂不是越来越小。
public static void main(String[] args) {
new Person();
new Person();
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}class Person{
public void finalize(){
System.out.println("gon");
}
}你们可能说加 System.gc(); 但是JVM规范是程序彻底退出,会执行对象的垃圾清理工作的。要不然内存岂不是越来越小。
解决方案 »
- 关于Socket监听状态
- 一段简单的JAVA代码,谁帮我看看哪里出了问题
- 求助!如何编写一个简单的JAVA Application 应用程序,计算e=1+1/1!+1/2!+1/3!+……1/20!,并输出计算结果。
- 关于Java引用变量的一个问题
- 200分问几个问题!
- 下列代码有没有错误
- 新瓶装老酒,给分不商量~
- 新手问题,请问如何在Frame上显示一个TextField???????????????????
- 谁有JBuilder的补丁,或是第三方控件,能完善一下JBuilder的功能的???
- help! JAVA下有类似VC++ 下的socket 类吗?请各位高手看一下!!
- 如何获取一个程序执行后的时间和内存?
- 被线程搞死了,无法解决的小死锁,倾分相送,应该不难的。
所以楼上错了。
public class Finalizer {
public static void main(String[] args) {
for(int i = 0; i<1000;i++){
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
new Person();
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}class Person {
public void finalize() {
System.out.println("gon");
}
}这样试试看
我是说加不加System.gc(),为什么有区别,大家执行下看吧。