java强制回收对象_java 怎么对一个对象强制垃圾回收

一、Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。(1).对象不一定会被回收。(2).垃圾回收不是析构函数。(3).垃圾回收只与内存有关。(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。二、垃圾回收器:1、在Java中,当创建一个对象时,Java虚拟机(JVM)为该对象分配内存、调用构造函数并开始跟踪你使用的对象。当停止使用一个对象(就是说,当没有对该对象有效的引用时),JVM通过垃圾回收器将该对象标记为释放状态。2、当垃圾回收器将要释放一个对象的内存时,调用该对象的finalize()方法(如果该对象定义了此方法)。垃圾回收器以独立的低优先级的方式运行,只有当其线程挂起等待该内存释放的情况出现时,才开始运行释放对象的内存。(事实上,可以调用System.gc()方法强制垃圾回收器来释放这些对象的内存。)3、在以上的描述中,有一些重要的事情需要注意。首先,只有当垃圾回收器释放该对象的内存时,才会执行finalize()。如果在Applet或应用程序退出之前垃圾回收器没有释放内存,垃圾回收器将不会调用finalize()。三、finalize()方法的优缺点:1、根据Java文档,finalize()是一个用于释放非Java资源的方法。但是,JVM有很大的可能不调用对象的finalize()方法,因此很难证明使用该方法释放资源是有效的。2、Java1.1通过提供一个System.runFinalizersOnExit()方法部分地解决了这个问题。(不要将这个方法与Java1.0中的System.runFinalizations()方法相混淆。)不象System.gc()方法那样,System.runFinalizersOnExit()方法总结:并不立即试图启动垃圾回收器。而是当应用程序或Applet退出时,调用每个对象的finalize()方法。

阅读全文 >

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值