Java --Xmx 的 JVM 限制

Java JVM limits for --Xmx

我是 运行 java 应用程序,在 Windows 10 台机器上通过

JAVA -Xms1500M -Xmx1600M -jar appname.jar

应用程序在一段时间后失败,并出现错误提示堆不足 space。当它 运行 使用任务管理器时,我可以看到我使用了机器上可用总内存的大约 50%。

如果我尝试增加 -Xmx space 然后我收到一条错误消息说它无法分配 - 为什么会这样,因为有足够的可用内存?

Java 应用程序是第 3 方,我知道它可以在同事的电脑上运行

我的 JVM 版本是

我怀疑你是运行 32位JVM。 (根据版本信息,您有一个 Oracle 版本,Java 8 是 Oracle 提供 32 位可下载的最后一个版本。)

假设是这种情况,Windows 上的 32 位 Java 的最大堆大小限制在 1.4 到 1.6GB 之间。该限制是 Windows 分配虚拟地址空间的方式的结果。更多详情请阅读:

解决方案是为 Windows 下载并安装 64 位 Java 版本。您需要 "x86-64" 架构的下载。

(我注意到你是 运行 1.8。0_101。它于 2016 年 7 月发布,已经过时了。在撰写本文时,最新的 Java 8 版本是 1.8.0_231.)


The Java app is a 3rd party and I know it runs on colleagues pcs

他们可能已经安装了 64 位 Java。