java学习笔记之对象清除、垃圾收集

本文介绍了Java中的垃圾回收机制,如何自动销毁不再使用的对象,以及与之相关的finalize()、System.gc()、System.runFinalization()和System.runFinalizersOnExit(true)等方法的用途和注意事项。通过实例展示了不同情况下对象清理的效果,强调了通常无需手动触发垃圾回收,推荐使用完对象后将其设为null。
摘要由CSDN通过智能技术生成

本篇来聊聊java中内存回收机制。

如果有c++编程经验的朋友,肯定知道在c++中如果创建了一个对象,当不再使用的时候,需要手动调用delete方法来进行销毁。那么在java中我们为什么可以自由的创建对象而不用去考虑(其实也是要考虑的,只是平常忽略了它)?因为java提供了一套完整的垃圾回收机制(gc)。它会自动扫描内存中我们所创建过且不再使用的对象,进行自动销毁。听上去是不是很高端呢~

虽然听上去很不错并且它也确实能帮助我们自动销毁不用的对象,但它并非完美,因为我们在程序运行的时候,我们并不知道gc什么时候会来销毁那些我们所不再使用的对象,gc一般只有在资源开始紧张的时候,才会以独立的优先级的方式运行。事实上如果说gc足够完美的话,所谓的内存溢出是不是就很少出现了呢?然而现实中还是会出现内存溢出的情况的,这也从另一方面说明了gc的工作流程是不能被保证的。

下面我们要说说几个相关的方法,finalize(),System.gc(),System.runFinalization(),System.runFinalizersOnExit(true)。

finalize():
finalize方法是定义在Object对象中的:

protected void finalize() throws Throwable { }
该方法只有在gc开始着手清理该对象时,才会执行该方法,然而jvm并不是必定会执行该方法的,比如你的程序在退出前都没有释放过该资源,那么该方法就不会执行。所以如果你重写了该方法,并在其中写了一定的操作,那么它是不能被保证一定执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moonfish0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值