2010-06-22 46 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的選項。