gpt4 book ai didi

java - 有多少内存必须留给 Java 服务器应用程序的操作系统?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:53 24 4
gpt4 key购买 nike

假设我正在使用 -Xms256m -Xmx1024m 运行 tomcat,但想增加我的堆使用量。

我可以分配的最大安全堆大小是多少?

为了这个问题的目的,请假设系统有 5GB RAM 并且是 z/Linux 系统。但是,如果可能的话,我想要一个更广泛的经验法则答案。

这是专用系统,所以我主要担心操作系统内存使用情况。我不担心其他程序。

此外,如果这是重复的,抱歉。我很惊讶我没有找到关于这种事情的更多信息。

GC

PS:我知道可能需要更多系统信息。我不介意答案是否详细说明如何找到答案,而不是给我一个数字。

最佳答案

如果您非常关心性能,您将希望避免交换堆的所有成本。这意味着您必须确保系统上的总保留内存少于可用 RAM。

很难给出设置堆大小的经验法则,因为我们无法知道您的系统或应用程序的 native 内存消耗。

例如,您的 Java 应用程序将为元空间和 JNI 数据等内容消耗 native 内存。

我认为您能做的最好的事情就是以不太激进的堆大小运行应用程序(想想 5 GB RAM 系统上的 3 GB),以了解它通常消耗多少 native 内存。

当您知道这一点时,您可以相应地调整堆大小并确保留出一些内存(想想 10%)以防万一并用于操作系统级缓存

思考过程应该是这样的:

  • 当我在系统上什么都不运行时消耗的内存是 200 MB

  • 我的 java 应用程序通常消耗的 native 内存为 300 MB

  • 我需要 500 MB 用于操作系统级缓存和“以防万一”

  • 然后我应该能够将我的最大堆大小设置为 5000 - 500 - 300 - 200 = 4000 MB

关于java - 有多少内存必须留给 Java 服务器应用程序的操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30404837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com