我创建了一个 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/