2010-06-22 44 views
7

我有一个.JAR,显然会占用太多的内存,并抛出一个异常“Java堆空间”(或类似的东西)。Java堆空间Xmx Xms参数被忽略

所以,我想通过CMD这样运行.JAR:

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

没有解决不了的问题。同样的错误。 现在,当我检查Windows任务管理器中的进程选项卡时,我注意到我的jar的进程比我所要求的内存少得多(与没有参数运行相同)。

为什么忽略参数?

此外,我认为这个异常是在进程达到100mb内存使用量的时候引发的。 GC是否有可能释放内存,导致问题的原因是什么?有没有我可以为GC设置的参数来防止这种情况?

谢谢,马勒基:)

+0

*“...引发异常”Java堆空间“(或类似的东西)。”* How .... helpful。抛出的* actual *异常是什么? – 2010-06-22 13:43:50

回答

23

命令

javaw -jar MyJar.jar -Xms64m -Xmx128m 

将使用-Xms ...和-Xmx ...作为参数的 “主(字串[] args)” 的方法。
参数的JVM必须在罐子部分之前进行传递:

javaw -Xms64m -Xmx128m -jar MyJar.jar 

其原因可当我们执行“Java的版本”中可以看出:

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

如果您的参数-Xms ...和-Xmx ...是JVM的选项。