首页 新闻 会员 周边

java的finalize是否是多余的设计

0
悬赏园豆:5 [已解决问题] 解决于 2012-02-29 09:35

java的finalize是否是多余的设计,你平时经常使用吗?

左手程序右手诗的主页 左手程序右手诗 | 初学一级 | 园豆:82
提问于:2012-01-08 16:06
< >
分享
最佳答案
0

这个还真没用过,小菜鸟路过。

收获园豆:3
wofengletian | 初学一级 |园豆:172 | 2012-01-09 13:01

这个不应该是一个答案,因为你说的对提问者没有任何帮助。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-01-09 13:50

@水牛刀刀: 这个算是回答了第二个问题吧。

wofengletian | 园豆:172 (初学一级) | 2012-01-09 14:22

另在thinking in java里有关于finalize的描述,copy下给你

之所以要使用finalize(),看起来似乎是由于有时需要采取与Java的普通方法不同的一种方法,通过分配内存来做一些具有C风格的事情。这主要可以通过“固有方法”来进行,它是从Java里调用非Java方法的一种方式(固有方法的问题在附录A讨论)。C和C++是目前唯一获得固有方法支持的语言。但由于它们能调用通过其他语言编写的子程序,所以能够有效地调用任何东西。在非Java代码内部,也许能调用C的malloc()系列函数,用它分配存储空间。而且除非调用了free(),否则存储空间不会得到释放,从而造成内存“漏洞”的出现。当然,free()是一个C和C++函数,所以我们需要在finalize()内部的一个固有方法中调用它。

wofengletian | 园豆:172 (初学一级) | 2012-01-09 14:25
其他回答(2)
0
>3< | 园豆:225 (菜鸟二级) | 2012-01-08 16:20

What?

支持(0) 反对(0) 左手程序右手诗 | 园豆:82 (初学一级) | 2012-01-08 16:22
0

不多余,它在垃圾回收机制中有用处的,它是一个对象能否拒绝被垃圾回收的最后一道防线,只要在finalize函数中让该对象重新连接到GC Roots就不会被回收。它是由JVM触发的函数。

收获园豆:2
信仰や欺骗 | 园豆:247 (菜鸟二级) | 2012-02-04 14:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册