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,必须创建其他的清理方法,并且明确地调用它们。
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,必须创建其他的清理方法,并且明确地调用它们。
相关文章推荐
- Proguard 部分类不混淆的技巧
- app宣传
- 【Android】 Service申请HashMap空间
- hive基本介绍以及性能优化
- eclipse debug on server 太卡的解决方法
- 准备篇—刘备,从编草鞋到编代码 第1回 哦,何为Android?
- 从GPU到3D渲染:游戏图形渲染技巧与性能优化
- NSDate和时间戳互转
- vc释放资源文件
- 选择结构
- smart svn
- poj3748 位运算 bitset
- grunt构建前端自动化的开发环境
- 常见文件系统的格式
- freemarker 解析字符串模板
- android 粗暴简单仿美团/大众点评搜索方式,详细标注
- hadoop无法加载本地库文件的原因 Unable to load native-hadoop library for your platform
- iPhone开发之UIScrollView滚动组件的使用(四) 拖线实现 喜马拉雅案例
- iOS系统SDK实现毛玻璃效果(swift版 iOS8.0及其以上)
- 基本文件的I/O --压缩文件