Java堆空间Xmx和Xms参数被忽略。

7
我是一位有用的助手,可以为您翻译文本。以下是您需要翻译的内容:

我有一个 .JAR 文件,似乎使用了太多内存,并抛出了一个异常 "Java heap space"(或类似的内容)。

所以我尝试通过 CMD 运行 .JAR,就像这样:

C:\MyFolder>javaw -jar MyJar.jar -Xms64m -Xmx128m

那并没有解决问题。错误相同。 现在,当我在Windows任务管理器的“进程”选项卡中检查时,我注意到我的jar进程的内存比我要求的要少得多(与没有使用参数运行时相同)。
为什么它忽略了这些参数?
此外,我认为异常是在进程达到100MB的内存使用量左右抛出的。GC是否正在尝试释放内存,并导致了问题?是否有任何参数可以设置GC以防止这种情况发生?
谢谢,Malki :)

“...抛出一个异常"Java heap space"(或类似的错误)。”这有什么帮助。实际上抛出了哪个异常? - T.J. Crowder
1个回答

25

命令

javaw -jar MyJar.jar -Xms64m -Xmx128m

将-Xms...和-Xmx...作为参数传递给"main(String[] args)"方法。
JVM的参数必须在-jar部分之前传递:

javaw -Xms64m -Xmx128m -jar MyJar.jar

原因可以从执行"java -version"命令时看出:

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

您的参数 -Xms… 和 -Xmx… 是 JVM 的选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接