Java及时操纵程序中的内存管理[Java编程]
本文“Java及时操纵程序中的内存管理[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
利用Java的一个主要长处就是无需耽忧废弃对象,即,让Java运行时负责Java对象的内存管理.
这是通过让Java运行时对不再利用的Java对象举行垃圾汇集而实现的.
垃圾汇集是一个对比复杂的历程.普通,Java运行时会遍历堆,查抄不再被其他对象引用、从而可以安全删除的对象,但是,由于垃圾汇集占用CPU周期,所以它大概会影呼利用程序代码的履行.即,假如在履行利用程序代码的历程中履行垃圾汇集,则利用程序代码的呼应时间大概延伸.这会招致用户事件耽误的延伸.更为糟糕的是,因为用户不知道什么时刻会举行垃圾汇集,因此耽误的延伸是不可预知的.
及时利用程序有严峻的时间要求,即,它们必须在肯定的、已知的耽误条件下履行利用程序代码.因此垃圾汇集所惹起的不可预知的耽误延伸就成为一个问题.
那么这个问题的办理筹划是什么呢?一个明显的办理筹划就是不要对及时利用程序利用Java.这是一个下下选.作为一种编程语言和一个开辟平台,Java具有很多长处.我们应当可以办理Java中的这个问题.
另一种办理筹划是在Java中利用另一种内存管理办法来替换垃圾汇集程序.RTSJ (Real-Time Specification for Java)定义了immortal memory和scoped memory的概念.不朽内存(Immortal memory)是从不举行垃圾汇集的内存,只要JVM存在,它就也存在.作用域内存(Scoped memory)则是按块分配和释放的内存.即,用户显式地成立一个内存区域来存放对象,该区域中的对象将在该区域被销毁时释放.不管是不朽内存还是作用域内存,都不需求举行垃圾汇集.不过,这也有一个缺陷:管理内存的重担又落在了用户身上,就像C/C++利用程序一样.这个代价仍旧很高.有没有更好的办法呢?
我们来重新考虑一下垃圾汇集.垃圾汇集的主要问题是它所惹起的不可预知的耽误峰值.可否避免这种不可预知的行为呢?大概,可否限制(即约束)这种不可预知的行为呢?通过更频繁地履行垃圾汇集,我们便可以限制最大耽误时间.这就是WLRT所采取的办法.因此,垃圾汇集成为一项可预知的任务,具有已知的代价,从而使及时开辟人员可以按照需求举行考虑和建模.并且,更为重要的是,我们没有牺牲Java的易用性.
注:应当注意的是,固然有垃圾汇集和其他的内存管理技术,Java程序仍旧大概存在内存泄露.比方,在下述情形下:在不需求组件对象时,却没有将其安闲器中移除.
以上是“Java及时操纵程序中的内存管理[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |