think of java p 89页
一般不使用finalizer 方法
但是在一些情况下,它可以帮我们排除一些问题
eg:
class Book { boolean checkedOut = false; public Book(boolean checkedOut) { this.checkedOut = checkedOut; } public void checkedOut() { this.checkedOut = false; } @Override protected void finalize() throws Throwable { System.out.println("ok"); if (checkedOut) { System.out.println("error"); } else { System.out.println("ok"); } } } public class Ter { public static void main(String[] args) { Book book = new Book(true); book.checkedOut(); new Book(true); new Book(true); new Book(true); new Book(true); System.gc(); } }
结果:
ok
error
okerror
ok
error
ok
error
可以看见,在直接使用匿名的new Book() 的方法,在调用System.gc(),的时候,他会自动调用当前没有应用的对象
尽可能的取回收空间,
在一些特许情况下,我们可以利用其这一点,判断一个资源是否可以被正确的回收