gpt4 book ai didi

java - 在未指定 Xmx 的情况下尝试分配超过 128M Xms 时出现 JVM 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:01 28 4
gpt4 key购买 nike

我在运行我的应用程序时看到 JVM 问题,我只是简单地执行以下 java 命令:

C:\Users\optitest>I:\j2sdk\bin\java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

C:\Users\optitest>I:\j2sdk\bin\java -Xms4g -version
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified

即使 Xms 设置为 128M 也不起作用:

C:\Users\optitest>I:\j2sdk\bin\java -Xms128m -version
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified

仅当 Xms 设置为 64M 或更小时才有效:

C:\Users\optitest>I:\j2sdk\bin\java -Xms64m -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

有趣的是,如果我指定 Xmx,那么它工作得很好。

C:\Users\optitest>I:\j2sdk\bin\java -Xms4g -Xmx4g-version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

C:\Users\optitest>I:\j2sdk\bin\java -Xms4g -Xmx8g-version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

更有趣的是:以上所有命令在具有相同操作系统(Windows Server 2008 R2 Enterprise SP1)和相同jdk版本的另一台机器上运行良好。物理内存为 16GB。

有什么想法吗?

最佳答案

Any idea?

显而易见的结论是,如果您想使用 -Xms 指定初始堆大小,并且您希望将大小设置为大于默认最大堆大小的值,您需要指定最大堆大小。

您在不同机器上得到不同结果的原因是 JVM 以不同方式计算默认堆大小,具体取决于 Java 版本和执行平台。在某些情况下,它是一个常数。在其他情况下,它取决于系统上的物理内存量。

只需显式设置最大堆大小,就不会出现此问题。


如果您想了解给定机器的默认堆大小,请运行此命令:

java -XX:+PrintFlagsFinal -version 

关于java - 在未指定 Xmx 的情况下尝试分配超过 128M Xms 时出现 JVM 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com