当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

<b>java的解除:收尾和垃圾堆积</b>[Java编程]

赞助商链接



  本文“<b>java的解除:收尾和垃圾堆积</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

程序员都知道“初始化”的重要性,但普通忘掉排除的重要性.毕竟,谁需求来排除一个int呢?但是关于库来说,用完后简单地“释放”一个对象并非老是安全的.当然,Java可用垃圾汇集器回收由不再利用的对象占据的内存.目前考虑一种非常特别且不多见的情形.假定我们的对象分配了一个“特别”内存区域,没有利用new.垃圾汇集器只知道释放那些由new分配的内存,所以不知道若何释放对象的“特别”内存.为办理这个问题,Java供应了一个名为finalize()的办法,可为我们的类定义它.在抱负情形下,它的工作原理应当是这样的:一旦垃圾汇集器预备好释放对象占用的存储空间,它首先调用finalize(),并且只有在下一次垃圾汇集历程中,才会真正回收对象的内存.所以假如利用finalize(),便可以在垃圾汇集期间举行一些重要的排除或打扫工作.
但也是一个潜在的编程陷阱,因为有些程序员(分外是在C++开辟后台的)刚开始大概会错误认为它就是在C++中为“破坏器”(Destructor)利用的finalize()——破坏(排除)一个对象的时刻,必定会调用这个函数.但在这里有必要辨别一下C++和Java的辨别,因为C++的对象必定会被排除(排开编程错误的因素),而Java对象并非必定能作为垃圾被“汇集”去.大概换句话说:

垃圾汇集并不等于“破坏”!

若能时刻紧记这一点,踩到陷阱的大概性就会大大削减.它意味着在我们不再需求一个对象之前,有些行动是必须采纳的,并且必须由自己来采纳这些行动.Java并未供应“破坏器”大概近似的概念,所以必须成立一个原始的办法,用它来举行这种排除.比方,假定在对象成立历程中,它会将自己描绘到屏幕上.假如不从屏幕明确删除它的图象,那么它大概永久都不会被排除.若在finalize()里置入某种删除机制,那么假定对象被当作垃圾收掉了,图象首先会将自身从屏幕上移去.但假如未被收掉,图象就会保存下来.所以要记着的第二个重点是:

我们的对象大概不会当作垃圾被收掉!

有时大概发现一个对象的存储空间永久都不会释放,因为自己的程序永久都接近于用光空间的临界点.若程序履行完毕,并且垃圾汇集器一向都没有释放我们成立的任何对象的存储空间,则随着程序的退出,那些资源会返回给操作系统.这是一件功德情,因为垃圾汇集本身也要损耗一些开销.如永久都不用它,那么永久也不用支出这部份开销.


  以上是“<b>java的解除:收尾和垃圾堆积</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .