A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM李帅 中级黑马   /  2013-3-14 10:34  /  1708 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM李帅 于 2013-3-15 09:11 编辑

有人熟悉finalize方法吗
怎样用finalize写一个
手动回收的方法呢

点评

如果问题已经解决了,请将分类改为已解决;一定要对别人的回答有相应的回复哦,谢谢  发表于 2013-3-15 08:33

2 个回复

倒序浏览
几乎不可能实现原因如下:
(1)finalize()方法的通用格式如下:

protected void finalize( )
{
//内部Code
}

其中,关键字protected是防止在该类之外定义的代码访问finalize()标识符,所以你要复写该方法是不可以的。

(2)finalize( ) 正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize( ) 并不被调用。
这意味着你不可能知道何时——甚至是否——finalize( ) 被调用。因此,你的程序应该提供其他的方法来释放由对象使用
的系统资源,而不能依靠finalize( ) 来完成程序的正常操作。

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
HM李帅 + 3 赞一个!
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。
(1).对象不一定会被回收。
(2).垃圾回收不是析构函数。
(3).垃圾回收只与内存有关。
(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马