浅谈Java对象管理与对象的finalized()方法及垃圾回收算法

(一)finalized()方法原理

Java提供了一个名为finalize()的方法,在理想情况下,它的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。

(二)和c++析构器的区别

很多c++程序员会以c++的管理内存的规则去看待Java中内存管理,c++中使用new关键字创建对象(先分配内存,再调用构造函数完成初始化工作),使用delete关键子销毁对象(先调用析构函数,再释放内存)。然而在Java中程序员虽然使用new来创建对象,但销毁对象这一工作不由程序员来管理,Java引入了垃圾回收器来管理Java的内存回收,其本质就是伴随Java主进程为零的一个守护进程,对象什么时候销毁由他决定不由程序员决定。

(三)finalized()方法的用途

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值