可能是重复问题:
finalize方法和异常
当一个对象即将从内存中释放时,垃圾回收器会调用finalize()
方法。如果在finalize()
方法中引发异常会发生什么?
垃圾回收器是否会继续释放内存,还是会暂停该对象的进程?
可能是重复问题:
finalize方法和异常
当一个对象即将从内存中释放时,垃圾回收器会调用finalize()
方法。如果在finalize()
方法中引发异常会发生什么?
垃圾回收器是否会继续释放内存,还是会暂停该对象的进程?
您无法确定finalize方法是否会被执行(来自此博客)
如果垃圾收集器在释放对象的内存之前总是调用finalize,为什么要做上述操作呢?原因是垃圾收集器不总是有机会在JVM终止之前清理对象。
Finalizer会强制将对象提升到旧空间(这需要更长时间进行收集),并推迟GC直到运行finalizer,从而增加GC算法的开销。(参见《Java性能调优第二版》Jack Shirazi)。
由finalize方法抛出的任何异常会导致此对象的终结被停止,但是否则会被忽略。
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#finalize()"
finalize()
方法?这在大多数情况下都是不好的习惯。 - user177800