3

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

java -jar -Xms256m -Xmx1024m MyApplication.jar

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

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

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

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

4

3 回答 3

3

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

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

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

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

这可能已经足够接近了。您也可以考虑使用堆外内存,因为这可以为您提供更多使用内存的选择。

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

于 2012-09-13T13:05:25.647 回答
1

Java 虚拟机需要contiguous allocationWindows 中的内存。如果 RAM 是 2GB 并且它可能没有足够contiguous block of memory的 1GB,因此会出现错误。

于 2012-09-13T13:06:25.973 回答
1

我不相信有。

您面临的更大问题是,如果您将 Xmx 设置得较低(即其他用户可以使用相同的 Xmx)时出现 Out Of Memory ,那么它们也会出现Out of Memory ,因此您并没有通过允许它们来帮助任何事情设置较低的 Xmx。

我认为简单的答案是您需要为运行程序设置一些最低内存要求。

于 2012-09-13T13:10:22.463 回答