日期:2011-03-22 16:17:00 来源:本站整理
对象的成立和存在时间[Java编程]
本文“对象的成立和存在时间[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
从技术角度说,OOP(面向对象程序计划)只是触及抽象的数据范例、担当以及多形性,但另一些问题也大概显得非常重要.本节将就这些问题举行探究.
最重要的问题之一是对象的成立及破坏方法.对象需求的数据位于哪儿,若何掌握对象的“存在时间”呢?针对这个问题,办理的筹划是各异其趣的.C++认为程序的履行效率是最重要的一个问题,所以它答应程序员作出挑选.为得到最快的运行速度,存储以及存在时间可在编写程序时决意,只需将对象安排在仓库(有时也叫作自动或定域变量)大概静态存储区域便可.这样便为存储空间的分配和释放供应了一个优先级.某些情形下,这种优先级的掌握是非常有代价的.但是,我们同时也牺牲了机动性,因为在编写程序时,必须知道对象的精确的数目、存在时间、以及范例.假如要办理的是一个较通例的问题,如计算机帮助计划、仓储管理大概空中交通掌握,这一办法就显得太范围了.
第二个办法是在一个内存池中动态成立对象,该内存池亦叫“堆”大概“内存堆”.若采取这种方法,除非进入运行期,不然根本不知道到底需求多少个对象,也不知道它们的存在时间有多长,以及精确的范例是什么.这些参数都在程序正式运行时才决意的.若需一个新对象,只需在需求它的时刻在内存堆里简单地成立它便可.由于存储空间的管理是运行期间动态举行的,所以在内存堆里分配存储空间的时间比在仓库里成立的时间长得多(在仓库里成立存储空间普通只需求一个简单的指令,将仓库指针向下或向下移动便可).由于动态成立办法使对象本来就偏向于复杂,所以查找存储空间以及释放它所需的额外开销不会为对象的成立造成明显的影响.除此以外,更大的机动性关于通例编程问题的办理是至关重要的.
C++答应我们决意是在写程序时成立对象,还是在运行期间成立,这种掌握办法越发机动.大家大概认为既然它如此机动,那么无论若何都应在内存堆里成立对象,而不是在仓库中成立.但还要考虑别的一个问题,亦即对象的“存在时间”大概“生存时间”(Lifetime).若在仓库大概静态存储空间里成立一个对象,编译器会判断对象的持续时间有多长,到时会自动“破坏”大概“排除”它.程序员可用两种办法来破坏一个对象:用程序化的方法决意什么时刻破坏对象,大概操纵由运行环境供应的一种“垃圾汇集器”特点,自动探求那些不再利用的对象,并将其排除.当然,垃圾汇集器显得便利得多,但要求全部利用程序都必须容忍垃圾汇集器的存在,并能默许随垃圾汇集带来的额外开销.但这并不符合C++语言的计划目标,所以未能包含到C++里.但Java确切供应了一个垃圾汇集器(Smalltalk也有这样的计划;固然Delphi默许为没有垃圾汇集器,但可挑选安装;而C++亦可以利用一些由其他公司开辟的垃圾汇集产品).
本节剩下的部份将谈论操作对象时要考虑的另一些因素.
以上是“对象的成立和存在时间[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:调集与承当器
- ·下一篇文章:抽象的底子类和接口
- ·中查找“对象的成立和存在时间”更多相关内容
- ·中查找“对象的成立和存在时间”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论