这也就意味着用户不再需要充分了解他们应用程序系统的内存需求。相反地,他们可以相信JVM内存系统可以根据应用程序的需求调整堆大小。缩减和扩展通常由堆的使用情况决定。这一特性的发展同时也需要考虑到其他应用程序的内存需求或者JVMs的运行以及应用程序的权限。假如内存的需求忽然增加,堆尺寸将动态增长。相反,假如内存需求减少,那么JVM可能会考虑减少Java 堆的尺寸。
在一些系统中,应用程序可能会在某些特定的点上处于闲置状态,对于这样的系统考虑应用程序的权限是十分有用的。当权限较低的应用程序进入睡眠状态时,Java 堆可能会暂时收缩,在可能的情况下为权限更高的应用程序提供更多的可用内存。
动态垃圾回收
在运行时,更改垃圾回收机制是另一个已经实现的特性,利用这个特性可以增加BEA WebLogic JRockit内存治理系统的灵活性。某个垃圾回收策略对应用程序运行的某个阶段来说是最优的,那么对于另外一个阶段可能会有另一个机制是最优的。通过让JVM决定在每个垃圾回收点上使用哪个垃圾回收机制,可以获得更好的性能。通过使用这个自动配置垃圾回收器的特性可以实现在运行时动态改变垃圾回收策略,因此理论上不再需要用户设置启动选项的标志:
-Xgc: [gencon singlecon parallel]
另一个可以增加垃圾回收动态特性的方法是自动化nursery治理。在某些情况下,某个nursery可能在一个应用程序的整个运行过程中都没有用到。因此可以在需要时再将一个nuersery置为使能状态以此进一步提高性能。用户不再需要理解垃圾回收机制的内部工作原理就可以获取最优的应用程序性能。
由于这一特性仍处在实验阶段,用户目前只能通过使用启动选项标志实现适应性的垃圾回收系统。
-XgcPRio: [throughput pausetime]
新闻热点
疑难解答