【问题标题】:Java JVM limits for --Xmx--Xmx 的 Java JVM 限制
【发布时间】:2020-04-01 06:34:58
【问题描述】:

我正在通过

在 Windows 10 机器上运行 java 应用程序
JAVA -Xms1500M -Xmx1600M -jar appname.jar

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

如果我尝试增加 -Xmx 空间,则会收到一条错误消息,指出无法分配 - 为什么会出现这样的情况,因为有大量可用内存?

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

我的JVM版本是

【问题讨论】:

  • 你有多少内存?您正在运行 32 位 JVM 吗? java -version 打印出什么。
  • 我在 64 位机器上,内存为 12Gb
  • Java 版本信息已添加到问题中
  • 如果是 32 位,您将有 4GB 的限制
  • @gurioso - 实际上,在 Windows 上它大约为 1.6GB。请参阅我的答案中的链接。

标签: java windows memory jvm


【解决方案1】:

我怀疑您正在运行 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。)


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

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

【讨论】:

  • 谢谢 - 这是我运行 32 位版本的问题。删除它并添加 64 位版本。现在可以正常使用了。
  • 我用它来查找我正在运行的版本stackoverflow.com/questions/8825244/…
猜你喜欢
  • 1970-01-01
  • 2021-03-29
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多