java - 使用-Xmx内存参数可能会导致错误 "Could not create the Java virtual machine"

标签 java memory error-handling parameters jvm

我创建了一个 java 应用程序,很多用户都在使用它。我已将该应用程序捆绑在一个 exe 文件中,使用此命令在其中运行它:

java -jar -Xms256m -Xmx1024m MyApplication.jar

我使用这个高“-Xmx”值是因为有时应用程序可能需要高内存才能工作,否则可能会导致“内存不足”错误。

应用程序对我来说运行得很好,因为我有 3GB 内存,但许多其他用户在启动时收到错误“无法创建 Java 虚拟机”,因为他们的内存不足:1.5GB 或 2GB。

我被困在“内存不足”和“无法创建 Java 虚拟机”这两个错误之间!!

是否有一个 java 参数来保留 1024 内存(如果内存可用),如果没有,则在需要时保留最大内存?

最佳答案

要么需要 1 GB,要么不需要。

如果您希望使用更多可用内存,我会尝试使用 -server JVM,它默认最大为主内存的 1/4。它还可以使长时间运行的程序运行得更快。 ;)

在您的情况下,它将使最大堆(不是总内存)成为

1.5 GB -> 0.38 GB
2 GB   -> 0.5 GB
3.5 GB -> 0.88 GB

这可能足够接近了。您还可以考虑使用堆外内存,因为这可以让您在如何使用内存方面有更多选择。

顺便说一句:4 GB 内存的成本不到 20 美元。 :P

关于java - 使用-Xmx内存参数可能会导致错误 "Could not create the Java virtual machine",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406913/

相关文章:

java - 在正确的时间抛出异常

java - "Comparison method violates its general contract"- 我无法检测到任何不及物性

c++ - 实体组件系统的自定义堆预分配

java - 使用 dynamodb 映射器将属性投影到索引

c - C语言中如何分配大内存

C:读取MCU整个Flash存储器的值

python - 谁应该调用 PyErr_Fetch?

internet-explorer - 当您选择一个不存在的文件以HTML格式上载时会发生什么?

Java:用透明像素填充 BufferedImage

java - 创建一个带有源附件的 jar。