A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,在下面的程序中,为什么finalize()里面的代码没有被执行啊?

public class Systemgc{
        public Systemgc(){  
                System.gc();
        }
        public void finalize(){
                System.out.println("after System.gc() is called");
        }        
         
        public static void main(String [] args){
               
                Systemgc d=new Systemgc();
        }
}

3 个回复

倒序浏览
这个方法应该是不受程序员控制的,JVM会不定期的对垃圾对象进行清理,而何时清理是由JVM内部决定的,即使你调用了gc()方法,也不一定会立即执行。
回复 使用道具 举报
本帖最后由 孙峰 于 2012-6-10 08:54 编辑

public void finalize(){
                System.out.println("after System.gc() is called");
这个方法是Object 类中的一个方法。 运行时会提示 无法覆盖java.lang.Object中的finalize()方法。
讲此方法名换一个,xx()
然后在 main函数中调用 d.xx(),就执行了
回复 使用道具 举报
本帖最后由 吴超 于 2012-6-10 11:18 编辑

  1. <DIV class=t_fsz>使用finalize方法并不会忙上调用垃圾回收机制,会在不确定的时间对其回收
  2. 如果,你按照下面,将一个对象指向null,那这个对象在堆内存中,就会成为一个垃圾,在调用这个finalize方法,就会强制回收



  3. package com.text;
  4. //观察finalize的调用
  5. public class SystemDemo3 {
  6.         public static void main(String[] args) {
  7.                 Student stu = new Student();
  8.                 stu = null;
  9.                 System.gc();
  10.         }

  11. }

  12. class Student {
  13.         private String name;
  14.         private int age;

  15.         public String getName() {
  16.                 return name;
  17.         }

  18.         public void setName(String name) {
  19.                 this.name = name;
  20.         }

  21.         public int getAge() {
  22.                 return age;
  23.         }

  24.         public void setAge(int age) {
  25.                 this.age = age;
  26.         }

  27.         // 重写toString方法
  28.         public String toString() {
  29.                 return "姓名" + name + "年纪" + age;
  30.         }

  31.         // 自定义finalize() 方法
  32.         public void finalize() {
  33.                 System.out.println(this);
  34.         }

  35. }</DIV>
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马