2013-09-18 3 views
2

Я пытаюсь изменить сборщик мусора на JVM сервера для борьбы с исключением java.lang.OutOfMemoryError: GC overhead limit exceeded, в соответствии с некоторыми другими вопросами, которые я нашел здесь. Хотя я столкнулся с некоторой путаницей в использовании этих параметров командной строки. Это то, что я делаю:Опция командной строки JVM

java -XX:+UseConcMarkSweepGC 

Однако я получаю сообщение usage, и никаких признаков того, что не изменилось.

Это выход я вижу:

Использование: Java [-options] класс [арг ...] (выполнить класс) или Java [-options] -jar jarfile [арг ...] (запустить файл JAR) где варианты включают в себя: ........

Является ли это правильное использование аргументов командной строки? Я делаю глупую ошибку? (Это случается много)

ответ

2

командной строки флаги, как один на один используются JVM вы создаете при запуске java команды, они не являются «глобальными» переключает.

Чтобы использовать флаг, включите его в аргументы виртуальной машины вашего обычного исполнения.

Кроме того, обратите внимание, что включение ConcMarkSweepGC на самом деле вам не поможет, так как все, что оно дает ему потенциально более активную сборку мусора. У вас либо есть:

  • утечка памяти в вашем приложении (обычно оборванные ссылки, but not always).
  • Ваш webapp просто требует больше памяти для запуска, и в этом случае вам нужно use -Xmx to increase the max heap size.
+0

Да, чувак, извините, но это абсолютно ничего не значит для меня. Я прикрепил аргумент к моему сценарию запуска на сервере tomcat. Проблема в том, что я не знаю, где * или * как * использовать эти команды. Не могли бы вы объяснить немного более конкретно? – christopher

+2

@chris: Я могу, теперь, когда вы на самом деле указали, что используете Tomcat. [Этот поток] (http://stackoverflow.com/questions/7738794/add-jvm-options-in-tomcat) описывает, как использовать параметры VM в этом случае. Вот где. Что касается ** как **, это очень большая тема. Я отредактирую свой ответ, чтобы включить некоторые указатели. –

Смежные вопросы