Java JDK SE 8内存分配问题(OpenJDK中的OpenJDK 8不会出现这种情况)

Java JDK SE 8内存分配问题(OpenJDK中的OpenJDK 8不会出现这种情况),java,java-8,Java,Java 8,关于以下消息: 无法为3145728KB对象堆保留足够的空间 我需要一些提示来了解发生了什么 要点和观察: 在Windows 10 x64(16G内存)上运行 仅在使用此分发时发生: 使用来自OpenJDK的构建,它可以正常工作: 在pom.xml中,我尝试添加以下行:-Xms1G-Xmx4G-Xss1M-XX:-usegcOverdelimit-XX:MaxHeapSize=4G。但它“抱怨”指定的大小超过了最大可表示大小。(最初的Xmx和MaxHeapSize是3G) 主要目标:编译以前

关于以下消息:

无法为3145728KB对象堆保留足够的空间

我需要一些提示来了解发生了什么

要点和观察:

  • 在Windows 10 x64(16G内存)上运行
  • 仅在使用此分发时发生:
  • 使用来自OpenJDK的构建,它可以正常工作:
  • pom.xml
    中,我尝试添加以下行:
    -Xms1G-Xmx4G-Xss1M-XX:-usegcOverdelimit-XX:MaxHeapSize=4G
    。但它“抱怨”
    指定的大小超过了最大可表示大小。
    (最初的Xmx和MaxHeapSize是3G)
主要目标:编译以前使用OracleJDK8和OpenJDK8完成的项目

有“灯”吗

------编辑

arg
-d64
返回
错误:此Java实例不支持64位JVM。

可能是32位,来自Java网站的编译?

“Windows i586”是32位。Windows上的任何32位程序,即使Windows是64位的,也只能处理大约3G,包括Java。在Oracle许可(非GPL)下,您可以获得Windows(和Linux)的32位和64位版本,包括8u40或8u45,如果您有某种原因需要,您读过这篇文章吗@我看见了。未修复我的问题。这是一个32位的分发版,但您应该注意,并不是所有分配的内存都将被堆使用。您分配的内存将分为两部分,堆和非堆(大部分是只读的,它们是您使用类加载器加载的jar文件。这是Java最大的荒谬之处之一。请看一下这个博客,它也很有用:@dave_thompson_085是的。。可能吧,但想法是从Oracle JDK中使用OpenJDK(因为有商业许可证)“Windows i586”是32位的。Windows上的任何32位程序,即使Windows是64位的,也只能处理3G,包括Java。您可以在Oracle许可证(而不是GPL)下获得Windows(和Linux)的32位和64位版本包括8u40或8u45,如果你有什么理由想这样做的话。你读了吗?@lman我看到了。没有解决我的问题。这是一个32位的发行版,但你应该注意,并不是所有分配的内存都会被堆使用。分配的内存将分为两部分,堆和非堆(大部分是只读的,它们是使用类加载器加载的jar文件。这是Java最大的荒谬之处之一。请看这个博客,它也很有用:@dave_thompson_085是的..可能吧,但想法是从Oracle JDK跑出来使用OpenJDK(因为有商业许可证)