代码之家  ›  专栏  ›  技术社区  ›  Stu Thompson Helter Scelter

当通过-Xmx分配更多内存时,Sun JVM会变慢吗?

  •  8
  • Stu Thompson Helter Scelter  · 技术社区  · 17 年前

    当更多的内存可用并通过-Xmx使用时,Sun JVM会变慢吗?(假设:机器有足够的物理内存,因此虚拟内存交换不是问题。)

    堕落的 . 这个想法是为了防止由于我自己的编程错误而导致的堆空间耗尽故障。罕见的事件,但如果我有一个淫秽的-Xmx值,比如2048mb或更高,我的快速发展的webapp可以避免这些事件。该应用程序受到严格监控,因此JVM内存消耗会出现异常峰值,任何缺陷都会得到修复。

    可能的重要细节:

    • Java 6(以64位模式运行)
    • 四芯Xeon
    • RHEL4 64位
    • 春天,冬眠
    • 高磁盘和网络IO

    :我试图避免发布JVM的配置,但很明显,这让问题变得荒谬地开放。因此,我们来看看相关的配置参数:

    -Xms256m 
    -Xmx1024m 
    -XX:+UseConcMarkSweepGC 
    -XX:+AlwaysActAsServerClassMachine 
    -XX:MaxGCPauseMillis=1000 
    -XX:MaxGCMinorPauseMillis=1000 
    -XX:+PrintGCTimeStamps 
    -XX:+HeapDumpOnOutOfMemoryError 
    
    5 回复  |  直到 17 年前
        1
  •  6
  •   James    17 年前

    通过添加更多内存,堆的填充时间将更长。因此,它将减少垃圾收集的频率。但是,根据对象的致命程度,您可能会发现执行单个GC所需的时间会增加。

    GC需要多长时间的主要因素是多少 居住

        2
  •  4
  •   Kai    17 年前

    顺便说一下,您似乎混淆了-Xmx和-Xms-Xms只设置初始堆大小,而-Xmx是最大堆大小。

        3
  •  0
  •   Lucero    17 年前

    在垃圾收集环境中,更多的内存通常会提供更好的性能,至少只要这不会导致虚拟内存的使用/交换。

    我不确定是否还有64位(32位)的服务器和客户机虚拟机,所以您可能还想调查一下。

        4
  •  0
  •   ReneS    17 年前

    根据我的经验,它不会变慢,但JVM会一直尝试缩减到Xms,并尝试保持在较低的边界或接近Xms。因此,如果您可以努力,也可以使用Xms。Sun推荐两款尺寸相同的产品。添加一些-XX:NewSize=512m(只是一个虚构的数字),以避免旧一代中昂贵的旧数据堆积,从而导致更长/更重的地面军事系统。我们使用700MB的NewSize运行我们的web应用程序,因为大多数数据都是短期的。

    所以,底线是:我不期望你的速度放慢,但要把你更多的记忆用在工作上。设置一个更大的新大小区域并将Xms设置为Xmx以降低GC上的压力,因为它不需要尝试缩减到Xms限制。。。

        5
  •  0
  •   kohlerm    17 年前

    如果您增加-Xmx,它通常不会帮助您的性能/吞吐量。 理论上可能会有更长的“停止世界”阶段,但在CMS的实践中,这不是一个真正的问题。

    推荐文章