finalize方法

finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?

  • 垃圾回收器(garbage collector)决定回收某对象时,就会运行该对象的finalize()方法。
  • 但是在Java中很不幸,如果内存总是充足的,那么垃圾回收可能永远不会进行,也就是说filalize()可能永远不被执行,显然指望它做收尾工作是靠不住的。
  • 那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。
  • Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。

finally代码块和finalize()方法有什么区别?

  • 无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。
  • finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。
上一篇:Java垃圾回收机制


下一篇:CSS样式-盒模型width和height范围分析