【问题标题】:Java -Xms initial size effectsJava -Xms 初始大小效果
【发布时间】:2011-02-01 16:54:30
【问题描述】:

设置 -Xms 参数有什么好处,例如,初始内存更大,然后默认计算一个(在我的情况下为 64 MB,根据 Java GC 调整: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size)?

另外,将初始内存和最大内存设置为相同大小有什么好处吗?

谢谢。

【问题讨论】:

    标签: java memory garbage-collection heap-memory


    【解决方案1】:

    好处是,当您用完足够的堆以使其必须调整大小时,会降低性能。如果您最初将其设置为 64MB,但事实证明您的应用程序在负载下需要 250MB,当您达到接近 64MB 时,JVM 将分配更多堆空间并可能在一些对象周围移动并进行其他簿记。这当然需要时间。

    当您的应用程序处于负载状态时,您希望所有资源都专用于使其运行,因此这些额外的工作可能会使应用程序的响应速度变慢,甚至在某些情况下,如果在堆内存耗尽之前它可能会崩溃调整大小。

    有时在使用 Java 应用程序时,您会看到诸如“将 XmsXmx 设置为相同的值”之类的说明。这样做是为了完全避免调整大小,以便您的应用程序启动时其堆已经与以往一样大。

    【讨论】:

    • 根据您的经验,是否建议将 Xms 设置为与 Xmx 相同的值?
    • 这取决于应用程序。如果您是一家金融机构,为一个应用程序或一组应用程序提供专用服务器,这是有道理的。特别是因为处理市场订单的应用程序可能每秒处理 100 条或 1000 条消息,平均延迟为 2-25 毫秒。对于当时发送的所有订单,调整大小可能会使延迟恶化 5000%。你甚至可以放弃订单。不过,与往常一样,在您尝试优化之前进行分析。
    • 应该注意,对于具有大量活动 JVM 的系统,-Xms 将增加平均 JVM 占用空间,而允许 JVM 自行管理其堆分布允许使用内存占用空间收集方案。
    • @Phil,这是一个很好的答案,但如果将您对 SyBer 问题的评论合并到原始答案中会更好。
    【解决方案2】:

    链接的文章解释得很清楚:

    默认值:-Xms 3670k -Xmx 64m [...] 大 服务器应用程序经常遇到 这些默认值有两个问题。一 是启动缓慢,因为初始 堆很小,必须调整大小 许多主要收藏品。一个更 紧迫的问题是,默认 最大堆大小不合理 对于大多数服务器应用程序来说很小。 服务器的经验法则 应用程序是:

    1. 除非你有问题 暂停,尝试授予尽可能多的内存 尽可能的虚拟机。 默认大小(64MB)通常太 小的。
    2. 将 -Xms 和 -Xmx 设置为 相同的值增加了可预测性 通过删除最重要的 来自虚拟的尺寸决定 机器。然而,虚拟 然后机器无法补偿 如果你做了一个糟糕的选择。
    3. 一般来说,增加内存 增加处理器数量, 因为分配可以 并行化。

    您也可以关注this discussion的问题。

    【讨论】:

      【解决方案3】:

      设置 -Xms 参数有什么好处,例如初始内存更大,然后默认计算一个

      如果初始堆很小并且必须针对许多主要集合调整大小,则启动会很慢。

      另外,将初始内存和最大内存设置为相同大小有什么好处吗?

      -Xms-Xmx 设置为相同的值可以提高可预测性。在性能调整期间调整 JVM 大小时,这一点尤其重要。但是 JVM 将无法补偿任何错误的决定。

      我倾向于对生产服务器使用相同的值(在性能测试期间进行调整)。

      【讨论】:

      • 您能否在 stackoverflow.com/questions/39652282/... 和 stackoverflow.com/questions/39652282/... 上提供您的想法?提前致谢
      【解决方案4】:

      如果您的应用程序通常需要超过 64 MB 的堆内存,则将 Xms 设置为较大的值应该会在一定程度上提高应用程序的性能,因为 VM 不必多次请求额外的内存。

      在生产系统中,我认为将 Xms 和 Xmx 设置为相同的值是明智的。它基本上是在说“这是 VM 可以获得的堆内存量,我将立即将其专用”。

      【讨论】:

        猜你喜欢
        • 2010-12-29
        • 2013-05-01
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        • 2010-10-29
        相关资源
        最近更新 更多