【问题标题】:JVM - How much RAM should I allocateJVM - 我应该分配多少 RAM
【发布时间】:2016-06-13 06:41:10
【问题描述】:

我没有找到关于我实际上应该为 JVM 分配多少 RAM 的建议。

假设我的电脑有 4GB 内存并运行 Windows 10。我几乎只在上面使用 Java 应用程序。我应该用多少 RAM 启动 JVM?系统本身也需要 RAM,因此按照我的逻辑,即使可能,我也不应该分配 4 GB。

这不是一个非黑即白的问题,我只是想知道如何在这个问题中找到答案。

【问题讨论】:

  • 对此没有好的通用答案,这完全取决于您使用的 Java 程序需要多少 RAM。
  • @Jesper:如果我并行运行 4 个程序会怎样?我还能为每个程序分配 2GB 空间吗?或者每个应用程序会单独占用 2GB,计算机可能会耗尽内存?
  • 当您启动 Java 程序时,您会启动一个新的 JVM 实例,它最多会分配您指定的任何内存量(使用 -Xmx 选项)。 4 个程序 = 4 个 JVM,如果您使用 -Xmx=2G,每个 JVM 最多分配 2 GB。
  • 除非您遇到与内存相关的问题,否则我建议您使用 JVM 默认值,这对于许多用途都很合理。
  • @ThorbjørnRavnAndersen 问题是:我们这里有一个业务应用程序,它经常达到分配的最大 RAM,如果用户打开了太多“标签”,这会导致很多延迟。使用“默认值”不会使其更具确定性。我们可能会增加堆大小并限制打开标签的数量。

标签: java jvm ram jvm-arguments


【解决方案1】:

我没有找到关于我实际上应该为 JVM 分配多少 RAM 的建议。

JVM 的默认设置是主内存的 1/4。如果您有 4 GB,则默认为 1 GB。

注意:这是一个非常小的系统,你会得到一些内存这么大的嵌入式设备和手机。

如果您有能力购买更多内存,那会让您的生活更轻松。

我几乎只在上面使用 Java 应用程序。我应该用多少 RAM 启动 JVM?

除非您有理由更改命令行参数,否则我会保持原样。

注意:您的操作系统将需要一些内存,可能需要 1 GB,并且您希望留出 1 GB 的空闲空间用于缓存等,因此您可以将堆大小增加到 2 GB,但前提是您需要这样做。

如果我同时运行 4 个程序会怎样?我还能为每个程序分配 2GB 空间吗?

是的,但这是一个非常糟糕的主意。您的应用程序将开始交换,您的计算机可能无法使用。我会尝试将这台机器的总容量控制在 2 GB 以下。

我们这里有一个业务应用程序,它通常会达到分配的最大 RAM,如果用户打开了太多“选项卡”,它会滞后很多。

在这种情况下,您应该确保拥有适合该工作的工具,这意味着确保您的系统有足够的内存。 4 GB 内存需要 18 美元。如果您有一台 4 GB 的业余 PC,我会说,获得更多内存。三年前,我 8 岁的儿子 8 岁时,我给了他一台 8 GB 内存的电脑,因为少买是没有意义的。我至少会得到 16 GB 或 32 GB。那么也许值得花一些时间来调整它。

【讨论】:

    【解决方案2】:

    您可以在命令行中输入“jconsole”或“jmc”来查看java使用了多少内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2023-03-13
      • 1970-01-01
      • 2012-06-11
      相关资源
      最近更新 更多