Java Xmx

2025年3月26日 | 阅读 3 分钟

在本节中,我们将了解 Java 中的 Xmx 是什么,以及如何为 Java 应用程序设置最大堆大小

Java 中,有时运行 Java 应用程序时会显示如下错误消息:

Error occurred during initialization of VM. Could not reserve enough space for object heap. Could not create the Java virtual machine.

上述错误表明需要增加堆大小才能运行应用程序。没有足够的空间来创建对象。解决此错误的方法是使用 Java -Xmx 参数以及指定的堆大小来增加堆大小。让我们看看 Java 中的 -Xmx 是什么

Java 中的 Xmx 是什么?

在 Java 中,Xmx 是一个标志,用于指定 JVM 的最大内存(以字节为单位)分配池。它设置了 最大堆大小。请记住,值必须是 1024 的倍数,并且必须大于 2MB。它使用字母 Kk 表示千字节大小,使用字母 Mm 表示兆字节大小。默认堆大小为 64M。

默认堆大小

默认的初始最大堆大小基于 自适应优化算法。在 Java 中,初始堆大小为 256M266634176 字节,最大堆大小为 4068M4266146816 字节。

我们建议为小型和中型 Java 应用程序将最大堆大小设置在 512M1024M 之间。

设置最大堆大小

我们可以将堆大小增加到我们想要的任何值,但请记住 RAM 必须支持该值。假设我们想将最大堆大小设置为 80M。我们可以使用以下任何标志来设置最大堆大小。所有命令都分配相同的堆大小。

上述 Xmx 标志将 Java 堆 内存分配给最大 80MB。请注意,标志 (-Xmx) 和内存大小 (80M) 之间没有空格。无论您使用大写字母还是小写字母,都没有关系。例如,-Xmx80M-Xmx80m 相同。这意味着应用程序可以使用可用内存的最大堆大小为 80M。因此,Java 中的 -Xmx 标志会更改 JVM 的最大堆大小。

请按照以下步骤设置最大堆大小。

第一步: 打开控制面板,然后单击 系统 图标。

Java Xmx

第二步: 单击 高级系统设置。这将打开系统属性窗口。

Java Xmx

第三步: 在系统属性窗口中,单击环境变量。这将打开环境变量对话框。

Java Xmx

第四步: 在环境变量对话框中,单击系统变量下的“新建”按钮。

Java Xmx

第五步: 在窗口中,提供变量名 _JAVA_OPTIONS 和变量值 -Xmx512m。您可以将 512 替换为任何值。之后,单击 确定 按钮三次。

Java Xmx

现在,我们已将最大堆大小设置为 512M。

如果您使用的是 Eclipse IDE,则可以通过指定 VM 参数来完成相同的事情,如下所示。

Java Xmx

为什么我们需要最大化堆大小?

如果 Java 进程超出了 -Xmx 的最大 Java 堆大小,就会抛出流行的 java.lang.OutOfMemoryError 错误。

其他与内存相关的命令行参数

Java 提供了更多用于控制 Java 应用程序内存的选项。如果我们想查看可用的内存选项,我们可以使用 java -X 命令。它显示了可用于处理内存的各种选项。

Java Xmx

在上面的结果中,有四个与 Java 应用程序内存相关的命令行参数。

  • -Xnoclassgc: 禁用类垃圾回收。
  • -Xms<size>: 该命令设置 Java 堆的初始大小。其默认大小为 2M(2097152 字节)。大小应大于 1024 字节(1KB)。它必须是 1024 的倍数。
  • -Xmx<size>: 设置最大 Java 堆大小。
  • -Xss<size>: 设置 Java 线程栈大小。

示例

让我们看一些基于 Xmx 的示例。

  • -Xms2m -Xmx80m: 堆从 2MB 开始增长到 80MB。
  • -Xms70m -Xmx70m: 堆从 70 MB 开始,并且永远不会增长。
  • -Xms40m: 堆从 40 MB 开始,并增长到默认的最大大小。
  • -Xmx256m: 堆从默认初始值开始,并增长到最多 256 MB。