内存管理是影响软件应用程序性能的一个重要因素。与实际的数据计算时间相比,分配和卸载内存所用的时间更长。
虽然C++可对内存分配与释放进行直接控制,Java利用垃圾收集来回收程序不再需要的内存,试图掌握内存管理。但是,在需要实时性能时,与垃圾收集有关的“暂停”一直是人们反对应对Java的中心论点。
垃圾收集是一个周期性的过程,它中断程序的正常执行,分析对象引用,并回收被分配但不再被引用访问的内存。在大型Java应用程序中,垃圾收集暂停可能持续几秒钟,这段时间足以中断任何类型的实时通信或控制系统。
因此,垃圾收集提供的内存提取要求一些开发者更仔细地考虑内存管理问题。即使Java并没有提供和C++同等级别的内存分配控制,编程模式仍然会对Java应用程序的内存性能产生重大影响。
在本文中,我将简单回顾一下Java 5.0的垃圾收集调整功能。
Java 5.0垃圾收集原理
Java 1.5新特性??工效学??的目标是通过最少的命令行调整,为JVM提供优良的性能。工效学试图为一个应用程序选择最佳的垃圾收集器、堆大小与运行时间编译器。
垃圾收集器的选择何时会对用户产生影响呢?对许多应用程序来说,它根本没有影响。也就是说,在垃圾收集产生的暂停的频率与持续时间适度的情况下,应用程序可在其规范内执行。如果一个大型应用程序出现扩充,产生大量线程、处理器、套接字和许多内存,就会出现例外。
如果一个对象再也不能通过运行程序中的任何指针到达,则视其为垃圾。最直接的垃圾收集运算法则简单地在每个可到达的对象间迭代。那么,剩下的对象即为垃圾。这一方法所用的时间与活动对象的数目成比例关系,且禁止用于维护许多活动数据的大型应用程序。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!