内存管理系统常常被视为实现系统性能最优的一块主要绊脚石,因此在过去的几年里,Java应用环境对高效执行内存调优的需求急剧增长。受此影响JVM供应商开始一哄而上提供配置内存的特殊选项。获取最优内存性能——没有中断,最大限度地提高吞吐量——已经变得越来越复杂。除了迫切需要高效的调优功能之外,客户也十分明确地提出了简化操作的需求。
解决问题的方法是以最小的开销提供自调优和具备自适应性的运行时环境。目前,一些新技术在实现系统性能最优的同时,减少了调优的用户操作复杂性。其中包括由应用程序决定Java堆的大小,动态适应的垃圾回收和智能压缩。
这篇文章讨论了内存调优的复杂性,自调优内存系统的优势,其中一些面向BEA WebLogic Jrockit研发的新特性,将来可能会在BEA WebLogic Jrockit运用。
内存调优 - 一个复杂的问题
由于Java应用程序具有平台独立性以及多样性的特点,我们不可能创建出一个性能最优的通用内存配置。因此,使JVM针对不同环境实现内存调优的能力已经变得越来越重要。
一般来说,调优的目的就是通过调整JVM的某些特性以适应各个不同的应用系统,最终达到优化性能的目的。通常调整JVM到最优状态需要耗费大量的时间。因此,JVM提供商已经为客户提供了一些减少调优工作量的方法。
常用的解决方法是为每个客户提供所需的启动选项。为了满足每个客户的需要,启动项目的数目已经增加到一个不可预见的数量。这样做的一个不利影响就是,客户必须首先具备一些JVM的知识,才可以掌握如何使用和组合这些选项。换句话说,如果一个客户并不熟JVM的内部工作,那么对他来说这个解决方法将要耗费大量的时间。
另一个解决方法就是通过专门的咨询专家在站点提供调优服务。咨询专家对于JVM的内部工作原理已经了解,他们所要做的就是,了解客户系统以便设置调优选项保证性能最优。然而,咨询专家了解客户系统的需求可能也需要大量的时间,并且可能在与客户沟通的过程中,由于涉及到一些客户不愿透漏的敏感和重要信息而发生冲突。因此这个解决方案的开销同样很大。
由于相对前几年来,对性能高效和缩减开销的需求越来越备受关注,没有可调优功能的JVM无法良好运作,因此这样的JVM已经不再被接受。然而现存的解决方案过于昂贵,时间开销过大而且复杂性过高。我们需要一个新的廉价、快捷、简便的解决方案。