您的位置:首页 > 职场人生

Java面试系列【final、finally、finalize区别】-finalize是什么,基础篇

2009-03-10 10:09 1196 查看
成熟的C++程序员对内存的使用一般都是比较严谨的,构造方法和析构方法是伴随着对象的生成和销毁的。不再使用的内存都要及时释放。所以析构方法中最常见的操作是回收分配给对象的存储空间。那么对于Java初学者来说,往往有人要问,同样是OOP的语言,又与C++有着很大相似性的Java,如何做到这一工作呢?

Java不支持析构器。Java有自动的垃圾回收器,不需要人工回收内存。

那么有人要问我了,你这里介绍finalize到底和内存回收有什么联系呢?

finalize为Object类的成员方法,所以任何一个类都可以重写该方法,finalize方法将在垃圾回收器清除对象之前被调用。但实际上,不要使用finalize方法回收任何短缺的资源,因为到底何时finalize方法才能被真正调用很难知道。

JavaAPI中有这样的叙述。

finalize 的常规协定是:当 Java虚拟机已确定尚未终止的任何线程无法再通过任何方法访问此对象时,将调用此方法,除非由于准备终止的其他某个对象或类的终结操作执行了某个操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: