您的位置:首页 > 其它

final、finally和finalize的区别

2015-08-28 16:58 246 查看
一、final------是关键字

1、修饰数据成员

(1)基本类型:值不变

(2)对象类型:引用不变,一旦指定一个对象后,不能再改为指向另一个对象

2、修饰方法:该方法不能被重写

3、修饰类:该类不能被继承

二、finally------是区域块,与try...catch...finally连用

在try...catch...finally模型中,无论怎么样,finally块中都会被执行

三、finalize------是Object的一个方法

1、作用:

GC只知道回收那些由new分配的内存,若你的对象不是通过new方式获得了一块“特殊”的内存(比如:native 方法中调用C的malloc分配内存,除非你调用了free,否则这块内存得不到释放,从而造成了内存泄露),那么GC就无能为力了。这时候,可以在finalize中调用free。

2、原理

一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。

3、注意

无论是gc还是finalize,都不能保证一定会发生。若jvm并未面临内存耗尽的情形,它是不会浪费时间去执行gc的。通常,不能指望finalize,必须创建其他的清理方法,并且明确地调用它们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: