Java能自动的进行垃圾收集,可以将finalize方法添加到任何类中,finalize方法会在垃圾收集器清除对象之前被调用。但是实际的操作中,不要依赖finalize方法回收任何短缺资源,因为很难知道这个方法什么时候才能被调用。
有个叫作System.runFinalizersOnExit(true)的方法可以确保finalize方法在Java关闭之前被调用。不过这个方法并不安全。另一种替代的方法是使用Runtime.addShutdownHook的方法增加“关闭钩子”。
如果需要在资源使用完毕后关闭资源,那就需要进行手工的管理,对需要清除的资源使用dispose方法。重要的是,如果你使用的类含有dispose方法,你需要在对象操作完成后调用这个方法,尤其是,如果类的某个实例字段含有这个dispose方法,要提供一个释放实例字段的dispose方法。
有个叫作System.runFinalizersOnExit(true)的方法可以确保finalize方法在Java关闭之前被调用。不过这个方法并不安全。另一种替代的方法是使用Runtime.addShutdownHook的方法增加“关闭钩子”。
如果需要在资源使用完毕后关闭资源,那就需要进行手工的管理,对需要清除的资源使用dispose方法。重要的是,如果你使用的类含有dispose方法,你需要在对象操作完成后调用这个方法,尤其是,如果类的某个实例字段含有这个dispose方法,要提供一个释放实例字段的dispose方法。