Пространство кучи Java Параметры Xmx Xms игнорируются - PullRequest
8 голосов
/ 22 июня 2010

У меня есть .JAR, который, очевидно, использует слишком много памяти и выдает исключение "пространство кучи Java" (или что-то подобное).

Итак, я попытался запустить .JAR через CMD следующим образом:

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

Это не решило проблему. Та же ошибка. Теперь, когда я проверил вкладку «Процессы» в диспетчере задач Windows, я заметил, что процесс моего jar-файла имеет намного меньше памяти, чем я запрашивал (так же, как и запуск его без параметров).

Почему игнорируются параметры?

Кроме того, я думаю, что исключение возникает в тот момент, когда процесс достигает 100 МБ памяти. Возможно ли, что GC пытается освободить память, и это является причиной проблемы? Есть ли какой-нибудь параметр, который я могу установить для ГХ, чтобы предотвратить это?

Спасибо, Малки:)

1 Ответ

25 голосов
/ 22 июня 2010

Команда

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.

...